曲线问题

zhuxun37 2003-09-10 08:46:52
在OpenGL中,画Bezier曲线时,函数glMap1f()是怎样生成中间点的?
...全文
57 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuxun37 2003-09-11
  • 打赏
  • 举报
回复
画Bezier曲线的程序如下:
unit BZLineMain;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
CgWindow, CgTypes, CgTexture, GL, ExtCtrls;

type
TBForm = class(TCGForm)
Timer: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
BForm: TBForm;

const
ctrlpoints: array [0..3,0..2] of GLfloat = //定义控制点
(( -4.0, -4.0, 0.0), ( -2.0, 2.0, 0.0),
(2.0, -2.0, 0.0), (4.0, 4.0, 0.0));
implementation

{$R *.DFM}

procedure TBForm.FormCreate(Sender: TObject);
begin

InitGL;
glClearColor(0.0, 0.0, 0.0, 1.0);
glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4,@ctrlpoints[0][0]);
glEnable(GL_MAP1_VERTEX_3);
glShadeModel(GL_SMOOTH);
{
// Remember these two if you want to use lighting:
glEnable(GL_AUTO_NORMAL);
glEnable(GL_NORMALIZE);
}
end;

procedure TBForm.FormPaint(Sender: TObject);
var
i:integer;
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glColor3f(0.0, 1.0, 0.0);
glBegin(GL_LINE_STRIP);
for i := 0 to 30 do
glEvalCoord1f(i/30.0);
glEnd;
// 下面一段代码将控制点显示为黄色的点
glPointSize(5.0);
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_POINTS);
for i := 0 to 3 do
glVertex3fv(@ctrlpoints[i][0]);
glEnd;
PageFlip;
end;
procedure TBForm.FormResize(Sender: TObject);
var
w, h:integer;
begin
w := ClientWidth;
h := ClientHeight;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w <= h) then
glOrtho(-5.0, 5.0, -5.0*h/w,5.0*h/w, -5.0, 5.0)
else
glOrtho(-5.0*w/h, 5.0*w/h, -5.0, 5.0, -5.0, 5.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
end;

end.



其中的函数glMap1f( )和glEvalCoord1f( )是怎样生成中间点的??????
zhuxun37 2003-09-11
  • 打赏
  • 举报
回复
就是求Bezier曲线的中间点的函数,假如我要画一条Bezier曲线,给定四个控制点,其它的中间点就用求值器来计算,这时就用到了两个函数:glMap1f( )和glEvalcoord1f( )。
zzwu 2003-09-11
  • 打赏
  • 举报
回复
请先说明一下函数glMap1f()的功能是怎样的?
qwer324 2003-09-11
  • 打赏
  • 举报
回复
dfgfdgs
klbt 2003-09-10
  • 打赏
  • 举报
回复
不太清楚,帮你顶。

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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