如何画椭圆啊!有哪位高手指教一下.
发布网友
发布时间:2022-04-25 14:49
我来回答
共4个回答
热心网友
时间:2023-10-09 22:53
Visual Basic 6.0 画
Dim g_temp_pt0(2) As Double
Dim g_temp_pt1(2) As Double
Dim g_temp_pt2(2) As Double
Dim g_click_size As Integer
Dim len_val As Double
Dim g_cur_tool As Long
Private Sub Command1_Click()
MicroDrawOcx1.UseEvents = 1
g_cur_tool = 501
g_click_size = 0
End Sub
Private Sub MicroDrawOcx1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
If g_cur_tool = 501 Then '画椭圆
If g_click_size = 0 Then
MicroDrawOcx1.GetSnapPoint g_temp_pt0(0)
g_click_size = g_click_size + 1
ElseIf g_click_size = 1 Then
MicroDrawOcx1.GetSnapPoint g_temp_pt1(0)
g_click_size = g_click_size + 1
ElseIf g_click_size = 2 Then
MicroDrawOcx1.GetSnapPoint g_temp_pt2(0)
g_click_size = g_click_size + 1
MicroDrawOcx1.CreateEllipseBy3pt g_temp_pt0(0), g_temp_pt0(1), g_temp_pt1(0), g_temp_pt1(1), g_temp_pt2(0), g_temp_pt2(1)
MicroDrawOcx1.RubberReset
MicroDrawOcx1.RedrawAll
g_click_size = 0
End If
End If
End Sub
Private Sub MicroDrawOcx1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
ElseIf g_cur_tool = 501 Then
If g_click_size = 1 Then
MicroDrawOcx1.GetSnapPoint g_temp_pt1(0)
len_val = MicroDrawOcx1.GetLineLength(g_temp_pt0(0), g_temp_pt0(1), g_temp_pt1(0), g_temp_pt1(1))
MicroDrawOcx1.DrawBegin
MicroDrawOcx1.DrawCircle g_temp_pt0(0), g_temp_pt0(1), len_val
MicroDrawOcx1.DrawEnd
End If
MicroDrawOcx1.GetSnapPoint g_temp_pt2(0)
If g_click_size = 2 Then
MicroDrawOcx1.DrawBegin
MicroDrawOcx1.DrawEllipse g_temp_pt0(0), g_temp_pt0(1), g_temp_pt1(0), g_temp_pt1(1), g_temp_pt2(0), g_temp_pt2(1)
MicroDrawOcx1.DrawEnd
End If
End If
End Sub
-Delphi 7.0
...
procere TForm1.Button1Click(Sender: TObject);
begin
microdrawocx1.UseEvents:=1;//打开鼠标事件
ptsize := 0;
end;
procere TForm1.Button2Click(Sender: TObject);
begin
microdrawocx1.UseEvents:=0;//关闭鼠标事件
end;
procere TForm1.MicroDrawOcx1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
setlength(pt,2);
ptsize:=ptsize+1;
case ptsize of
1 : microdrawocx1.GetCurPoint(pt[0],1);//点击第一点所得到的坐标
2 : microdrawocx1.GetCurPoint(pt1[0],1);//点击第二点所得到的坐标
end;
if ptsize =2 then
begin
microdrawocx1.RubberReset();//重新设置橡皮条
microdrawocx1.CreateCircle(pt[0],pt[1],rad);//创建圆
microdrawocx1.RedrawAll();//刷新
ptsize:=0;
end;
end;
procere TForm1.MicroDrawOcx1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
setlength(pt1,2);
if ptsize =1 then
begin
microdrawocx1.GetCurPoint(pt1[0],1);//点击第一点后捕捉到的当前点
rad:=microdrawocx1.GetLineLength(pt[0],pt[1],pt1[0],pt1[1]);//得到椭圆得长半径
microdrawocx1.DrawBegin();//开始画圆
microdrawocx1.DrawCircle(pt[0],pt[1],rad);//画圆橡皮条
microdrawocx1.DrawEnd();//结束画圆
end;
end;
end.
第一种画椭圆的方法如图1所示,先画出两条平行线,标上刻度,再利用对应x→1/x的直线,例如1→1、2→0.5、3→0.33、4→0.25、5→0.2、10→0.1,就可以形成椭圆包络线。这两条平行线距离越远,椭圆就越长。如果能找到适当的线距,以及相对应的刻度,也可以形成一个圆形。请研究一下。
第二种方法是把椭圆放入一个长方形。画出一个长方形ABCD,长是宽的2倍,例如16cm与8cm。再画两条直线ST和VW,把大长方形平均分割成4个小长方形。把直线ST、AD、BC都8等分,并如图2所示加以标示。
由W经过OS上标示为1的点画一条直线,由V与AS上标示为1’的点连一条直线。这两条直线的交点就是椭圆上的一点。
接着,由W经过OS上标示为2的点,以及由V与AS上标示为2’的点,分别画出直线。同样地,这两条直线的交点也会在椭圆上。继续以这种方式完成各象限的直线,然后用平滑的曲线连接各个交点。
由于长方形的长宽比例以及等分的点数使得直线的数目很少,因此以少数交点就难以精确绘出椭圆形。但如果等分点太多,也容易出错。
第三种方法需要用到三角板。先画出一个大圆(如半径5cm),并在接近圆周的位置画上一点A,如图3所示。然后把三角板放在纸上,使三角板的直角刚好在圆周上,其中一边要与A点接触,顺着另一边画出一条弦PQ。移动三角板到许多不同位置,保持直角的一边接触A点而且直角在圆周上,你很快就可以发现一条椭圆包络线正逐渐成形。
完成一个椭圆形之后,试着把A点放在不同位置,看看结果如何。A是椭圆的焦点。另一个焦点在哪里?
第四种方法是用圆来形成椭圆包络线,如图4所示。画出一个圆,如直径5cm。画一条直径AOB,再每隔1cm画出垂直于AOB的弦。然后取其中一条弦PQ,以其中心R为圆心画圆,并通过 P点和 Q点(即PQ为这个圆的直径)。以同样的方式用其他垂直的弦为直径画圆,最后就会出现一个能令你满意的椭圆形。
以靠近A和B的弦为直径所画出的圆,会完全在椭圆形之内,因此它们不属于包络线的一部分。
http://cache.baidu.com/c?word=%BB%AD%3B%CD%D6%D4%B2%3B%B5%C4%3B%B7%BD%B7%A8&url=http%3A//ced%2Exxjy%2Ecn/RESOURCE/CZ/CZSX/SXBL/SXTS1062/5638%5FSR%2EHTM&b=0&a=56&user=
热心网友
时间:2023-10-09 22:53
如果是象数学里学的画椭圆很复杂,在实际操作中,只要用四个铁钉,钉在你需要画椭圆的范围内2厘米的位置,成菱形,然后用一条线饶住四个铁钉,线的长度比椭圆小,比四个铁钉的周长大,具体的大小用一根铅笔沿着线画一圈,刚好在你要画的椭圆的设计区间,然后画线,就成了一个你想要的椭圆。
你试试,又可以任意调节大小,这是木工在画椭圆用的,方便快捷。
热心网友
时间:2023-10-09 22:54
拿两根大头针一根棉线(没什么弹性的线)一枝笔.
用棉线做一个"圈",它的周长等于你要画的椭圆的长径减去两个焦点的距离.
把两个大头针钉在椭圆的两个焦点处,把棉线圈套在两根大头针上,放到平面,把笔尖也套进圈内,并用笔尖拉紧线圈.
移动笔在平面上画,就能画出你需要的椭圆了.
热心网友
时间:2023-10-09 22:55
找几何书,里面有详细的介绍。高中的几何书里就讲过。