(数学好的)高手请进~!!!!!!!!!!!!!!画图的问题!!(100分)

  • 主题发起人 主题发起人 yjsmask11
  • 开始时间 开始时间
Y

yjsmask11

Unregistered / Unconfirmed
GUEST, unregistred user!
我想画一条线,设起点为 (x1,y1) 终点为 (x2,y2)
当终点定下来时 便在以终点为起点 成30度角方向画一条长度为10的短线
形成一个箭头
如何实现~~~~~~~~~~~~~~~
 
有没高手在线啊
 
var
arg, sa, ca, dx, dy : real;

arg := 30 * 3.14159265 / 180.0;
sa := sin(arg);
ca := cos(arg);
dx := 10;
dy := 0;

x2 := x1 + dx * ca - dy * sa + 0.5;
y2 := y1 + dx * sa + dy * ca + 0.5;

Canvas.MoveTo( x1, y1 );
Canvas.LineTo( x2, y2 );
Canvas.LineTo( x2 - 3, y2 + 1 );
Canvas.MoveTo( x2, y2 );
Canvas.LineTo( x2 - 1, y2 + 3 );
 
我数学好,高等数学考110分,哈哈,太爽了,不过跟你的题有关系吗???????
这个计算起来很麻烦的,不过只要用到三角知识,也不要什么高深的
 
如果要将以(x1, y1), (x2, y2)为端点的线段旋转30度,则:
dx := x2 - x1;
dy := y2 - y1;
 
apw 你的数据类型 是怎么定义的啊

x, y编译不了啊
 
测试了一下,全部代码为:
procedure TForm1.RotateLine( x1, y1: Integer );
var
x2, y2: Integer;
arg, sa, ca, dx, dy : real;
begin
arg := 30 * 3.14159265 / 180.0;
sa := sin(arg);
ca := cos(arg);
dx := 10;
dy := 0;

x2 := x1 + Round(dx * ca - dy * sa);
y2 := y1 + Round(dx * sa + dy * ca);

Canvas.MoveTo( x1, y1 );
Canvas.LineTo( x2, y2 );
Canvas.LineTo( x2 - 3, y2 + 1 );
Canvas.MoveTo( x2, y2 );
Canvas.LineTo( x2 - 1, y2 + 3 );
end;
 
这家伙一定高中没毕业![:D]
 
后退
顶部