计算机图形学 画圆
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
float t = 1.0f*i / N;
int j = findj(t, T, n, k);
X[i] = deBoor(n, k, j, T, XX, t);
Y[i] = deBoor(n, k, j, T, YY, t);
}
}
void draw(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINE_STRIP);
for (int i = 0; i <= NFra Baidu bibliotek i++)
{
glVertex2i(X[i], Y[i]);
}
glEnd();
glFlush();
}
void main(int argc, char** argv)
{
glutInit(&argc, argv); //初始化GLUT环境
{
float *p = new float[k];
memcpy(p, x + j - k + 1, k*sizeof(float));
for (int r = 1; r < k; r++)
{
for (int i = j; i >= j - k + r + 1; i--)
{
float tt = (T[i + k - r] - t) / (T[i + k - r] - T[i]);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // GLUT显示模式:单缓冲区、RGB颜色模型
glutInitWindowPosition(50, 100); //窗口左上角的位置
glutInitWindowSize(500, 500); //显示窗口的大小
p[i - j + k - 1] = (1 - tt)*p[i - j + k - 1] + tt*p[i - j + k - 2];
}
}
float result = p[k - 1];
delete[]p;
return result;
}
void GetSamplingPint()
{
for (int i = 0; i <= N; i++)
glColor3f(0.0, 0.4, 0.2);
glBegin(GL_LINE_STRIP);
for (int i = 0; i <= n; i++)
{
glVertex2i(XX[i], YY[i]);
}
glEnd();
GetSamplingPint();
glColor3f(0.8, 0.4, 0.2);
const int N = 200;
float X[N + 1], Y[N + 1];
void init(void)
{
glClearColor(1.0, 1.0, 1.0, 0.0); //设置背景颜色
glMatrixMode(GL_PROJECTION); //设置投影参数
gluOrtho2D(0.0, 800.0, 0.0, 800.0); //设置场景的大小
#include <GL/glut.h> // OPenGL实用工具库
#include<cstring> //内存拷贝函数
const int n = 8;
float XX[n + 1] = { 600, 600, 400, 200, 200, 200, 400,600 ,600};
float YY[n + 1] = { 400, 600, 600, 600, 400, 200, 200,200,400 };
const int k = 3;
float T[n + k + 1] = { 0, 0, 0, 1.0f / 4, 1.0f / 4, 1.0f / 2, 1.0f / 2, 3.0f / 4, 3.0f / 4, 1, 1, 1 };
float W[n + 1] = { 1, 0.707, 1, 0.707, 1, 0.707, 1 };
glutCreateWindow("OpenGL20137750233祁远杰"); //创建显示窗口,加上标题
init(); //画图配置
glutDisplayFunc(draw); //调用绘图函数
glutMainLoop(); //进入事件处理循环
}
}
int findj(float t, float T[], int n, int k)
{
for (int j = 0; j < n + k; j++)
{
if (t >= T[j] && t<T[j + 1])
{
return j;
}
}
return n;
}
float deBoor(int n, int k, int j, const float T[], const float x[], float t)
float t = 1.0f*i / N;
int j = findj(t, T, n, k);
X[i] = deBoor(n, k, j, T, XX, t);
Y[i] = deBoor(n, k, j, T, YY, t);
}
}
void draw(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINE_STRIP);
for (int i = 0; i <= NFra Baidu bibliotek i++)
{
glVertex2i(X[i], Y[i]);
}
glEnd();
glFlush();
}
void main(int argc, char** argv)
{
glutInit(&argc, argv); //初始化GLUT环境
{
float *p = new float[k];
memcpy(p, x + j - k + 1, k*sizeof(float));
for (int r = 1; r < k; r++)
{
for (int i = j; i >= j - k + r + 1; i--)
{
float tt = (T[i + k - r] - t) / (T[i + k - r] - T[i]);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // GLUT显示模式:单缓冲区、RGB颜色模型
glutInitWindowPosition(50, 100); //窗口左上角的位置
glutInitWindowSize(500, 500); //显示窗口的大小
p[i - j + k - 1] = (1 - tt)*p[i - j + k - 1] + tt*p[i - j + k - 2];
}
}
float result = p[k - 1];
delete[]p;
return result;
}
void GetSamplingPint()
{
for (int i = 0; i <= N; i++)
glColor3f(0.0, 0.4, 0.2);
glBegin(GL_LINE_STRIP);
for (int i = 0; i <= n; i++)
{
glVertex2i(XX[i], YY[i]);
}
glEnd();
GetSamplingPint();
glColor3f(0.8, 0.4, 0.2);
const int N = 200;
float X[N + 1], Y[N + 1];
void init(void)
{
glClearColor(1.0, 1.0, 1.0, 0.0); //设置背景颜色
glMatrixMode(GL_PROJECTION); //设置投影参数
gluOrtho2D(0.0, 800.0, 0.0, 800.0); //设置场景的大小
#include <GL/glut.h> // OPenGL实用工具库
#include<cstring> //内存拷贝函数
const int n = 8;
float XX[n + 1] = { 600, 600, 400, 200, 200, 200, 400,600 ,600};
float YY[n + 1] = { 400, 600, 600, 600, 400, 200, 200,200,400 };
const int k = 3;
float T[n + k + 1] = { 0, 0, 0, 1.0f / 4, 1.0f / 4, 1.0f / 2, 1.0f / 2, 3.0f / 4, 3.0f / 4, 1, 1, 1 };
float W[n + 1] = { 1, 0.707, 1, 0.707, 1, 0.707, 1 };
glutCreateWindow("OpenGL20137750233祁远杰"); //创建显示窗口,加上标题
init(); //画图配置
glutDisplayFunc(draw); //调用绘图函数
glutMainLoop(); //进入事件处理循环
}
}
int findj(float t, float T[], int n, int k)
{
for (int j = 0; j < n + k; j++)
{
if (t >= T[j] && t<T[j + 1])
{
return j;
}
}
return n;
}
float deBoor(int n, int k, int j, const float T[], const float x[], float t)