请输入您要查询的百科知识:

 

词条 D3ROTATE
释义

DOS SVGACC图形开发库函数

原型 extern void far d3rotate (int points, int xorigin, int yorigin, int zorigin, int zrang, int yrang, int xrang,D3Point far *inary, D3Point far *outary)

输入 numpoints - 被旋转点的个数

xorigin, yorigin, zorigin - 旋转中心

zrang - 绕Z轴的旋转角

yrang - 绕Y轴的旋转角

xrang - 绕X轴的旋转角

inary - 指向包含待旋转点数组的D3Point的指针

输出 无返回值

outary - 指向包含旋转后点数组的D3Point的指针

用法 D3ROTATE提取inary中的三维点按照xorigin,yorigin,zorigin旋转指定的角度。结果通过outary返回,outary可与inary共用一个空间。一个虚的坐标系放置在旋转中心,旋转参照这些坐标轴进行。正的角度使得从X轴正向向Y轴正向旋转。此函数假定outary已合适分配。

例子

/*

* shows d3rotate works

*/

#include <stdlib.h>

#include <conio.h>

#include "svgacc.h"

D2Point plot[8];

void drwcube(void);

void main(void)

{

int vmode,i,dummy;

ProjParameters proj;

D3Point rcube[8];

D3Point cube[8] = { { 100,-100, 100},

{ 100,-100,-100},

{ 100, 100,-100},

{ 100, 100, 100},

{-100,-100, 100},

{-100,-100,-100},

{-100, 100,-100},

{-100, 100, 100}};

vmode = videomodeget();

if (!whichvga() || (whichmem() < 512))

exit(1);

res640();

proj.eyex = -1040;

proj.eyey = -600;

proj.eyez = -1200;

proj.scrd = 1700;

proj.theta = 30;

proj.phi = 45;

for(i=0;i<=360;i+=2)

{

d3rotate(8,0,0,0,i,i,i,cube,rcube);

dummy = d3project(8,&proj,rcube,plot);

drwcube();

sdelay(2);

drwcube();

}

drwcube();

getch();

videomodeset(vmode);

}

void drwcube(void)

{

int j;

for(j=0;j<=2;j++)

drwline(2,10,plot[j].x,plot[j].y,plot[j+1].x,plot[j+1].y);

drwline(2,10,plot[3].x,plot[3].y,plot[0].x,plot[0].y);

for(j=4;j<=6;j++)

drwline(2,10,plot[j].x,plot[j].y,plot[j+1].x,plot[j+1].y);

drwline(2,10,plot[7].x,plot[7].y,plot[4].x,plot[4].y);

for(j=0;j<=3;j++)

drwline(2,10,plot[j].x,plot[j].y,plot[j+4].x,plot[j+4].y);

return;

}

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/24 9:22:57