跪求关于c程序源代码,运行后的效果为动态图形,比如圆啊,三角形之类的,最好附上代码的解释

跪求关于c程序源代码,运行后的效果为动态图形,比如圆啊,三角形之类的,最好附上代码的解释,第1张

这个一个VC中画圆的代码(可能你还需要配置编译环境):

#include <GL/gluth> // 设置头文件

#include <stdlibh>

#include <mathh>

/void setPixel ( int x, int y)

{

glBegin ( GL_POINTS);

glVertex2i (x, y);

glEnd ();

}

inline int round (const float a ) { return int (a + 05); }

void lineDDA (int x0, int y0, int xEnd, int yEnd)

{

int dx = xEnd - x0, dy = yEnd - y0, steps, k;

float xIncrement, yIncrement, x = x0, y = y0;

if (fabs (dx) > fabs (dy))

steps = fabs (dx);

else

steps = fabs (dy);

xIncrement = float (dx) / float (steps);

yIncrement = float (dy) / float (steps);

setPixel (round (x), round (y));

for (k = 0; k < steps; k++) {

x += xIncrement;

y += yIncrement;

setPixel (round (x), round (y));

}

} /

class screenPt

{

private:

GLint x,y;

public:

screenPt()

{

x=y=0;

}

void setCoords (GLint xCoordValue,GLint yCoordValue)

{

x=xCoordValue;

y=yCoordValue;

}

GLint getx() const{

return x;

}

GLint gety() const{

return y;

}

void incrementx()

{

x++;

}

void decrementy()

{

y--;

}

};

void setPixel(GLint xCoord,GLint yCoord)

{

glBegin (GL_POINTS);

glVertex2i(xCoord,yCoord);

glEnd();

}

void circleMidpoint(GLint xc,GLint yc,GLint radius)

{

screenPt circPt;

GLint p=1-radius; //决策参数

circPtsetCoords(0,radius);

void circlePlotPoints (GLint ,GLint,screenPt);

circlePlotPoints(xc,yc,circPt);

while(circPtgetx()<circPtgety())

{

circPtincrementx();

if(p<0)

p += 2circPtgetx() + 1;

else

{

circPtdecrementy();

p += 2(circPtgetx() - circPtgety()) + 1;

}

circlePlotPoints(xc,yc,circPt);

}

}

void circlePlotPoints(GLint xc,GLint yc,screenPt circPt)

{

setPixel (xc + circPtgetx(),yc + circPtgety());

setPixel (xc - circPtgetx(),yc + circPtgety());

setPixel (xc + circPtgetx(),yc - circPtgety());

setPixel (xc - circPtgetx(),yc - circPtgety());

setPixel (xc + circPtgety(),yc + circPtgetx());

setPixel (xc - circPtgety(),yc + circPtgetx());

setPixel (xc + circPtgety(),yc - circPtgetx());

setPixel (xc - circPtgety(),yc - circPtgetx());

}

void init (void) // 初始化函数

{

glClearColor (10, 10, 10, 00); // 设置清屏的颜色(Red,green,blue),但不能让该颜色在显示窗上

// 出现

glMatrixMode (GL_PROJECTION); // 设置投影矩阵

glLoadIdentity (); // 单位化上述投影矩阵

gluOrtho2D (00, 8000, 00, 6000); // 设置具体投影 矩阵为平面正交投影 4/3

}

void lineSegment (void) //绘图函数

{

glClear (GL_COLOR_BUFFER_BIT); // 按glClearColor (10, 10, 10, 00);指定的颜色刷新颜色

glColor3f (10, 00, 00); //设置前景色,即画图的颜色

circleMidpoint(400,300,200);

glFlush ( ); // 在每一画面或场景的结尾处调用,强制前面发出的OpenGL 命令开始执行

}

void main (int argc, char argv) // OpenGL 绘图主函数

{

glutInit (&argc, argv); // 初始化GLUT 库

glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); // 设置 显示模式

glutInitWindowPosition (50, 100); // 窗口左上角像素坐标

glutInitWindowSize (800, 600); // 设置设备显示窗口大小 4/3

glutCreateWindow ("An Example OpenGL Program"); // 创建一个窗口,参数为窗口的标题

init ( ); // 函数调用

glutDisplayFunc (lineSegment); // 绘制当前窗口

glutMainLoop ( ); //通常用于程序的结尾,表示开始运行程序显示出所有创建的窗口

}

我只能说你好无聊啊

%方法一,改变图像本身

x=meshgrid(-10:05:10)

y=x';

z=sin((x^2+y^2)^(1/2))(x^2+y^2)^(1/2) ;

h=surf(x,y,z)

axis([-15,15,-15 15,-15,15]);

try

while 1

rotate(h,[0 0 1],1)

drawnow

end

end

%方法2,改变视角

x=meshgrid(-10:05:10)

y=x';

z=sin((x^2+y^2)^(1/2))(x^2+y^2)^(1/2) ;

surf(x,y,z)

h=gca;

axis vis3d

try

for i=0:inf

view(h,i,30)

drawnow

end

end

在 Adobe Premiere Pro 中使两个图形运动速度一样,可以使用“速率持续时间”效果。你可以按照以下步骤 *** 作:

将需要匹配运动速度的两个图形文件拖到 Premiere Pro 程序中,并拖动它们到时间轴上相邻的位置;

选中其中一个图形,然后打开“速率持续时间”效果面板。可以通过单击“窗口”菜单中的“效果控制”来访问该面板;

在“速率持续时间”效果面板中,你可以选择一个“百分比”值来改变选定剪辑的速率。为了让两个图形运动速度一样,你要记录下此时这个百分比值;

选中另外一个图形,并同样添加“速率持续时间”效果。将这个效果的“百分比”值设置为与第一个图形相同的值。

通过这些步骤,你就可以确保这两个图形的运动速度相同了。

以上就是关于跪求关于c程序源代码,运行后的效果为动态图形,比如圆啊,三角形之类的,最好附上代码的解释全部的内容,包括:跪求关于c程序源代码,运行后的效果为动态图形,比如圆啊,三角形之类的,最好附上代码的解释、MATLAB动画制作---图形的怎样实现图像的旋转求高人指点!谢谢、pr怎么让两个图形运动速度一样等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10206533.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存