本發(fā)明涉及網絡教學教具技術領域,具體為一種圓規(guī)教具及其繪圖實現方法。
背景技術:
圓規(guī)系繪圓用的繪圖工具。圓規(guī)由筆頭、轉軸、圓規(guī)支腿、格尺、折葉、筆體、筆尖、圓規(guī)尖、小耳構成,它的筆頭的下端插入連接在筆體的上端,筆體的下端螺紋連接在筆尖的上端,小耳的平齊端焊接在圓規(guī)支腿的外側中間,圓規(guī)支腿的下端夾緊連接在圓規(guī)尖的上端。其特征是:筆體的一面粘貼連接在折葉的一面,折葉的另一面粘貼連接在格尺的一端中間,筆體的夾縫上端兩側插入連接在轉軸的兩端,轉軸的軸體穿套連接在圓規(guī)支腿的上。
以往教師在制作傳統(tǒng)教具上,花費了太多的時間和經歷,卻沒達到預期理想的效果。而且做出來的教具大都是一次性的,不能二次利用,浪費人力、物力。為此,我們提出了一種圓規(guī)教具及其繪圖實現方法投入使用,以解決上述問題。
技術實現要素:
本發(fā)明的目的在于提供一種圓規(guī)教具及其繪圖實現方法,以解決上述背景技術中提出的以往教師在制作傳統(tǒng)教具上,花費了太多的時間和經歷,卻沒達到預期理想的效果。而且做出來的教具大都是一次性的,不能二次利用,浪費人力、物力的問題。
為實現上述目的,本發(fā)明提供如下技術方案:一種圓規(guī)教具,包括圓規(guī)體,所述圓規(guī)體的底部左右兩端分別連接有圓規(guī)體左腳和圓規(guī)體右腳,所述圓規(guī)體左腳的底端設有圓心針,所述圓規(guī)體右腳的底部與圓規(guī)體右腳畫筆連接。
優(yōu)選的,一種圓規(guī)教具繪圖實現方法,該圓規(guī)教具繪圖實現方法的具體步驟如下:
s1:使用buffer:tbitmap32畫布上產生一個圓規(guī)的模型,其中rbvalue:trulerbase為圓規(guī)定義實現所需要的數據;
s2:然后用戶用鼠標拖動圓規(guī)畫筆,利用圓規(guī)體右腳畫筆與圓心針的距離配合刻度尺,設定所畫圓的半徑;
s3:通過functionrotatepoint函數實現像素旋轉,滿足畫圓形的要求。
優(yōu)選的,所述步驟s1中,圓規(guī)教具包含圓規(guī)實現的基礎數據,具體為:
優(yōu)選的,所述步驟s1中,圓規(guī)模型具體實現是通過定義一個過程procedurelrulercompasses(sender:tobject;buffer:tbitmap32;rbvalue:trulerbase)實現;通過rbvalue.arraypolygons[0]實現圓規(guī)體;通過rbvalue.arraypolygons[1]實現圓規(guī)體左角;通過rbvalue.arraypolygons[2]實現圓規(guī)體右角;通過new1:=makepoint(rotatepoint(fixedpoint(rbvalue.pt3),fixedpoint(ptcenter),rbvalue.angle));new2:=makepoint(rotatepoint(fixedpoint(rbvalue.pt4),fixedpoint(ptcenter),rbvalue.angle));cm:=(rbvalue.pt4.x-rbvalue.pt3.x)/getdevicecaps(buffer.handle,logpixelsx)*25.4;self.simpletextonline(buffer,new1,new2,rbvalue.color,format('r=%.1f',[cm]),25,0.5)實現圓的半徑;通過setlength(rbvalue.arraypolygons[3],6)實現圓規(guī)體右角畫筆;通過ellipserect:=floatrect((rbvalue.pt3.x-10),(rbvalue.pt3.y-10),(rbvalue.pt3.x+10),(rbvalue.pt3.y+10));ellipsearray:=gr32_misc.getellipsepoints(ellipserect);simpleline32(buffer,ellipsearray,gr32.setalpha(rbvalue.pencolor,80+offacolor),1)實現圓規(guī)針;通過ifgetlengthfrom2point(rbvalue.arc1,rbvalue.arc2)<15thenbeginsimpleline32(destbuffer,[fixedpoint(rbvalue.arc1),fixedpoint(rbvalue.arc2)],rbvalue.pencolor,2)實現畫弧。當有mousemove事件,當鼠標在圓規(guī)體,圓規(guī)體左腳,圓規(guī)體右腳上時,lpaint(sender,bitmap)會改變模型對應部分的顏色。
優(yōu)選的,所述步驟s2中,利用鼠標實現實現圓規(guī)的計算斜率、移動、改變半徑、作圖的過程是通過if(lmouseispush)and(getrulerbase.rulerbasetype=rbtcompasses)and(notgetrulerbase.drawcreated)then選擇圓規(guī)工具圖標。selectedrulerbase.getanglefrompt1topt2計算斜率;if(__arrayindex=4)or(__arrayindex=5)then圓規(guī)作圖;if(__arrayindex=1)or(__arrayindex=2)then移動;if__arrayindex=3then改變圓規(guī)半徑尺寸。
優(yōu)選的,所述步驟s3中,圓規(guī)教具實現通過functionpointinpolygon函數實現判斷像素點是否在多邊形內,具體代碼實現如下:
優(yōu)選的,所述步驟s3中,圓規(guī)教具定義了像素點的旋轉函數,具體代碼實現如下:
旋轉前的坐標為(pt.x;pt.y)。pt.x:=pt.x-origin.x;pt.y:=pt.y-origin.y;旋轉后的坐標為(result.x;result.y)。result.x:=round((pt.x*cosang)+(pt.y*sinang)+origin.x);result.y:=round((pt.y*cosang)-(pt.x*sinang)+origin.y)。(origin.x;origin.y)為原點坐標。
與現有技術相比,本發(fā)明的有益效果是:本發(fā)明可以根據需要精確調節(jié)圓的半徑,圓規(guī)可以進行移動和旋轉,滿足畫圓形的要求。作為教具使用,形象逼真,方便存儲,吸引學生的注意力,效果很好,節(jié)省教師制作教具的時間,提高教師工作效率,具有廣闊的市場前景。
附圖說明
圖1為本發(fā)明結構示意圖。
圖中:1圓規(guī)體、2圓規(guī)體左腳、3圓規(guī)體右腳、4圓心針、5圓規(guī)體右腳畫筆。
具體實施方式
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參閱圖1,本發(fā)明提供一種技術方案:一種圓規(guī)教具及其繪圖實現方法,具體的,用戶點擊選中圓規(guī)教具圖標,使用buffer:tbitmap32畫布上產生一個圓規(guī)的模型,其中rbvalue:trulerbase為圓規(guī)定義實現所需要的數據。然后用戶用鼠標拖動圓規(guī)畫筆,設定所畫圓的半徑,旋轉functionrotatepoint函數操作圓規(guī)畫圓形。圓規(guī)包含圓規(guī)體1、圓規(guī)體左腳2、圓規(guī)體右腳3、圓規(guī)體右腳畫筆5、圓心針4,圓心在圓心針4上,圓規(guī)體1與圓規(guī)體左腳2和圓規(guī)體右腳3連接,圓規(guī)體右腳畫筆5和圓心針4在圓規(guī)體右腳3上,圓規(guī)體右腳畫筆5與圓心針4的距離為圓規(guī)半徑。所述圓規(guī)體右腳畫筆5與圓心針4的距離有刻度尺,可以標識圓的半徑??梢愿鶕枰_調節(jié)圓的半徑,圓規(guī)可以進行移動,通過functionrotatepoint函數實現像素旋轉,滿足畫圓形的要求。
首先,通過定義type進行類型定義,包含trulerbasetype=rbtcompasses圓規(guī)類型,trulerbaseaction=(rbanone,rbamove,rbaresize,rbaclose)四個操作事件類型。定義包含圓規(guī)實現的基礎數據,具體基礎數據為,
圓規(guī)的模型通過定義一個過程實現,這個過程是procedurelrulercompasses(sender:tobject;buffer:tbitmap32;rbvalue:trulerbase);通過rbvalue.arraypolygons[0]實現圓規(guī)體;通過rbvalue.arraypolygons[1]實現圓規(guī)體左角;通過rbvalue.arraypolygons[2]實現圓規(guī)體右角;通過new1:=makepoint(rotatepoint(fixedpoint(rbvalue.pt3),fixedpoint(ptcenter),rbvalue.angle));new2:=makepoint(rotatepoint(fixedpoint(rbvalue.pt4),fixedpoint(ptcenter),rbvalue.angle));cm:=(rbvalue.pt4.x-rbvalue.pt3.x)/getdevicecaps(buffer.handle,logpixelsx)*25.4;self.simpletextonline(buffer,new1,new2,rbvalue.color,format('r=%.1f',[cm]),25,0.5)實現半徑;通過setlength(rbvalue.arraypolygons[3],6)實現圓規(guī)體右角畫筆;通過ellipserect:=floatrect((rbvalue.pt3.x-10),(rbvalue.pt3.y-10),(rbvalue.pt3.x+10),(rbvalue.pt3.y+10));ellipsearray:=gr32_misc.getellipsepoints(ellipserect);simpleline32(buffer,ellipsearray,gr32.setalpha(rbvalue.pencolor,80+offacolor),1)實現圓規(guī)針;通過ifgetlengthfrom2point(rbvalue.arc1,rbvalue.arc2)<15then
begin
simpleline32(destbuffer,[fixedpoint(rbvalue.arc1),fixedpoint(rbvalue.arc2)],rbvalue.pencolor,2)實現畫弧。當有mousemove事件,當鼠標在圓規(guī)體,圓規(guī)體左腳,圓規(guī)體右腳上時,lpaint(sender,bitmap)會改變顏色。
畫圓時,通過判斷語句為真時,選擇圓規(guī)教具,即ifselectedrulerbase.rulerbasetype=rbtcompassesthen{圓規(guī)}。這時,開始在屏幕畫布上畫出一個圓規(guī)的模型,當判斷語句為真時,即if(selectedrulerbase.drawcreated)and(__rulerbaseaction=rbaresize)thenselectedrulerbase.getanglefrompt1topt2;計算出point1,point2的斜率,當滿足if(selectedrulerbase.drawcreated)and(__rulerbaseaction=rbamove)為真,并且if(__arrayindex=4)or(__arrayindex=5)也為真,此時圓規(guī)開始作圖。selectedrulerbase.arc2:=makepoint(rotatepoint(fixedpoint(selectedrulerbase.pt4),fixedpoint(selectedrulerbase.pt3),selectedrulerbase.angle))。
當開始旋轉圓規(guī)畫圓時,素點的旋轉函數functionrotatepoint實現像素點旋轉。functionrotatepoint(pt,origin:tfixedpoint;constradians:single):tfixedpoint;旋轉前的坐標為(pt.x;pt.y),原點坐標為(origin.x;origin.y),旋轉后的坐標為(result.x;result.y),其中result.x:=round((pt.x*cosang)+(pt.y*sinang)+origin.x);result.y:=round((pt.y*cosang)-(pt.x*sinang)+origin.y);當鼠標彈起后,畫圓結束lrulercompasses(sender,buffer,rbvalue)。
盡管已經示出和描述了本發(fā)明的實施例,對于本領域的普通技術人員而言,可以理解在不脫離本發(fā)明的原理和精神的情況下可以對這些實施例進行多種變化、修改、替換和變型,本發(fā)明的范圍由所附權利要求及其等同物限定。