如何建立三维图形(正方体)!

beckham7771986 2008-01-03 01:01:16
我在MFC中想建立一个立方体,不用opengl什么类库.用数组表示三维坐标如下:
int a[8][3]={
{100,100,50},
{200,100,50},
{200,200,50},
{100,200,50},
{100,100,-50},
{200,100,-50},
{200,200,-50},
{100,200,-50},
};
然后取点联线如下:
     pdc->MoveTo(a[0][0],a[0][1]);
pdc->LineTo(a[1][0],a[1][1]);
pdc->LineTo(a[2][0],a[2][1]);
pdc->LineTo(a[3][0],a[3][1]);
pdc->LineTo(a[0][0],a[0][1]);


pdc->MoveTo(a[4][0],a[4][1]);
pdc->LineTo(a[5][0],a[5][1]);
pdc->LineTo(a[6][0],a[6][1]);
pdc->LineTo(a[7][0],a[7][1]);
pdc->LineTo(a[4][0],a[4][1]);


pdc->MoveTo(a[0][1],a[0][2]);
pdc->LineTo(a[4][1],a[4][2]);

pdc->MoveTo(a[1][1],a[1][2]);
pdc->LineTo(a[5][1],a[5][2]);

pdc->MoveTo(a[2][1],a[2][2]);
pdc->LineTo(a[6][1],a[6][2]);


pdc->MoveTo(a[3][1],a[3][2]);
pdc->LineTo(a[7][1],a[7][2]);
但是,得不到所要的立方体,请问各位大侠,如何画一个立方体呢!小弟很感激!!!
...全文
559 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckham7771986 2008-01-12
  • 打赏
  • 举报
回复
void Read()
{
int flag,r,h;
double pi,x,y,z,cx,cy,thx,thy,th;
double xw,yw,zw;

pi=3.14159;
cx=320;
cy=180;
int ed=2000,eh=100,od=400,hl=1;

h=80; thy=0.2;r=100;n=4;thx=0.2;
flag=0;nn=1;

for(th=0;th<=2*pi+0.1;th+=2*pi/n)
{
x=r*cos(th); y=h; z=r*sin(th);

//Call rot_y: Call rot_x
zw=z; xw=x;
x=zw*cos(thy)-xw*sin(thy);
z=zw*sin(thy)+xw*cos(thy);

yw=y; zw=z;
y=yw*cos(thx)-zw*sin(thx);
z=yw*sin(thx)+zw*cos(thx);

if(ps==1){
x=x*ed/(ed-od-z);
y=(y*ed-eh*(od+z))/(ed-od-z);
}
//ax[nn]=x; ay[nn]=y; az[nn]=z;
XP[nn]=x; YP[nn]=y; ZP[nn]=z;
nn=nn+1;
}

flag=0;
nn=1;
for(th=0;th<=2*pi+0.1;th+=2*pi/n){
x=r*cos(th); y=-h; z=r*sin(th);

//Call rot_y: Call rot_x
zw=z; xw=x;
x=zw*cos(thy)-xw*sin(thy);
z=zw*sin(thy)+xw*cos(thy);

yw=y; zw=z;
y=yw*cos(thx)-zw*sin(thx);
z=yw*sin(thx)+zw*cos(thx);

if(ps==1){
x=x*ed/(ed-od-z);
y=(y*ed-eh*(od+z))/(ed-od-z);}
//bx[nn]=x; by[nn]=y; bz[nn]=z;
XP[nn+4]=x; YP[nn+4]=y; ZP[nn+4]=z;
nn=nn+1;
}

CP[1] = 1;CP[2] = 1;CP[3] = 1; CP[4] = 1;CP[5] = 1;CP[6] = 1;CP[7] = 1;CP[8] = 1;

}

void XCalculate(array2d B)
{ int i;
Read();
for (i = 1;i<9;i++ )
{
ax[i] =XP[i]*B[1][1]+YP[i]*B[2][1]+ZP[i]*B[3][1]+CP[i]*B[4][1];
ay[i] =XP[i]*B[1][2]+YP[i]*B[2][2]+ZP[i]*B[3][2]+CP[i]*B[4][2];
az[i] =XP[i]*B[1][3]+YP[i]*B[2][3]+ZP[i]*B[3][3]+CP[i]*B[4][3];
}

}
void CSANWEIView::OnSanwei()
{
// TODO: Add your command handler code here
CDC* pdc=GetDC();

double cx,cy;
cx=320;
cy=180;
for (int k=1;k<=4;++k)
{
for ( int j=1;j<=4;++j)
A[k][j]=0;
}
A[1][1]=1;
A[2][2]=1;
A[4][4]=1;
A[3][3]=1;
A[4][1]=6;
A[4][2]=4;
A[4][3]=4;

XCalculate(A);
for (int i = 1; i <5; i++ )
{
bx[i+4]=bx[i] =ax[i+4];
by[i+4]=by[i] =ay[i+4];
bz[i+4]=bz[i] =az[i+4];
}
for ( i = 1; i <5; i++ )
{
ax[i+4] =ax[i];
ay[i+4] =ay[i];
az[i+4] =az[i];
}

for(nn=1;nn<=n;nn++)
{
pdc->MoveTo(cx+ax[nn],cy+ay[nn]);
pdc->LineTo(cx+ax[nn],cy+ay[nn]);
pdc->LineTo(cx+ax[nn+1],cy+ay[nn+1]);
pdc->LineTo(cx+bx[nn+1],cy+by[nn+1]);
pdc->LineTo(cx+bx[nn],cy+by[nn]);
}


ReleaseDC(pdc);
}



typedef double array2d[5][5];
typedef double array[24];
double x0, z0 ,Aux1,Aux2,Aux3,Aux4,Aux5,Aux6,Aux7,Aux8;
int Theta, theta_y, phi_x, xx, yy,nn,n,ps,ed,eh,od,hl;
array X, Y, Z, C, XT, YT, ZT,XP,YP,ZP,CP;
array2d A, A1,Ah, Aw;
double ax[9],ay[9],az[9];
double bx[9],by[9],bz[9];


我想应该是这个样子的,请大家指点。谢谢!~~
superdiablo 2008-01-04
  • 打赏
  • 举报
回复
你在纸上画一个,然后用尺子量一量确定各个点的坐标,把连线画出来就行了
这个问题真幽默;-)
嵌云阁主 2008-01-03
  • 打赏
  • 举报
回复
在画图之前需要将3D坐标转换为2D坐标,看看图形学喔
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧