CAD教程 行业资讯 3D模型下载 Pro/E教程 CAD书店 软件下载 联系我们
技术资料 CAD招聘 发布招聘 CAD问答 设计竞赛 CAD认证 北京CAD培训
视频教程 PS教程 CAD图纸 图书推荐 Solidworks教程 CAD培训 CAD软件商

 最新视频教程Pro/ENGINEER Wildfire2.0 工业设计实例视频教程 (全套免费在线学习)   AutoCAD视频教程每日更新
 
首页 > CAD在线问答 > 计算机图形学

计算机图形学

2014-09-11 CAD教育网 http://www.cadedu.com



问题描述:我是初学计算机图形学,请高手指点指点。
1)。有点组成的立体图(0,0,40)(60,5,40)(0,40,0)(0,40,40)(30,0,40)(60,5,40)(30,0,0)(60,15,0)(30,40,0)(0,40,0)(0,40,37)(0,40,18)(017,40,37)(17,40,18),画出它的正等测投影图。
用C语言描述。
2。)用B样条曲线或者贝赛尔曲线画一个简单的图形。
用C语言描述。
谢谢!

回答:给你一个程序画出贝赛尔曲线:
如下:
class Curve
{
public void PaintCurve(Graphics g,Image buffer,Color c,int a[][],int n,int piece)
{

int l,n0,j,jay=1,m=1,x0,y0,xn,yn,b[][]=new int[2][1000],d[][]=new int[2][1000];
float piece1;
n--;
for(l=1;l<=n;l++)
{ d[0][l]=a[0][l];
d[1][l]=a[1][l];
}

piece1=(float)(piece);
n0=n;j=1;
x0=a[0][1];y0=a[1][1];
xn=a[0][n];yn=a[1][n];
g.setPaintMode();
g.setColor(c);
while(true)
{
for(l=1;l<=(n0-1)*n0/2;l++)
{
if(j==n){j=1;n--;}
if(d[0][j]>=d[0][j+1])
{ d[0][j]=(int)(0.5+d[0][j]-((float)(jay*(d[0][j]-d[0][j+1])))/piece1);
d[1][j]=(int)(0.5+d[1][j]-((float)(jay*(d[1][j]-d[1][j+1])))/piece1);
}
else
{
d[0][j]=(int)(0.5+d[0][j]+((float)Math.abs((jay*(d[0][j]-d[0][j+1]))))/piece1);
d[1][j]=(int)(0.5+d[1][j]-((float)(jay*(d[1][j]-d[1][j+1])))/piece1);
}
j++;
}
b[0][m]=d[0][j-1];
b[1][m]=d[1][j-1];
m++;
n=n0;
jay++;
j=1;
for(l=1;l<=n;l++)
{ d[0][l]=a[0][l];
d[1][l]=a[1][l];

}
if(piece==1)break;
if(m==piece)break;
}
g.drawLine(x0,y0,b[0][1],b[1][1]);
if(piece!=1)
{
for(m=1;m<piece-1;m++)
g.drawLine(b[0][m],b[1][m],b[0][m+1],b[1][m+1]);}
if(piece!=1)
g.drawLine(b[0][m],b[1][m],xn,yn);
}
}
这是一个java程序,可以稍微改一下就可以用C语言运行



 

 

从事—计算机图形学—数学该学哪些
3d技术属于计算机图形学吗
我来回答 共有条 回答
用户名: 密码:
验证码: 匿名发表
| AutoCAD | Pro/E | UG | 3Dmax | catia | solidworks | maya | photoshop | 模具设计 | 有限元 | matlab | 计算机图形学 | 室内设计 |