想象一下,圍繞一箇中心的給定增加半徑的圓,由給定旋轉的線交叉 - 我如何能夠在一個網格位置內繪製一個近似的4邊框矩形,如圖所示在圖像中的一個點位置?在「蜘蛛網」內獲取矩形?
詳細信息:我使用Lua的移動應用中。左上角座標爲0,0,所以中心爲maxX/2,maxY/2;我正在使用變量rotationStep和radiusStep來創建網絡。
* 6點或更多點的多邊形可能看起來更好。
謝謝!
想象一下,圍繞一箇中心的給定增加半徑的圓,由給定旋轉的線交叉 - 我如何能夠在一個網格位置內繪製一個近似的4邊框矩形,如圖所示在圖像中的一個點位置?在「蜘蛛網」內獲取矩形?
詳細信息:我使用Lua的移動應用中。左上角座標爲0,0,所以中心爲maxX/2,maxY/2;我正在使用變量rotationStep和radiusStep來創建網絡。
* 6點或更多點的多邊形可能看起來更好。
謝謝!
找出圓心與指定點之間的夾角。然後找到兩條與它關閉角度的線,它將在這兩條線之間。
計算你的點距離圓心的距離。
沿着你的線(D)繪製相同的距離,除以圓之間的距離。你會以這種方式得到所有4分。
首先計算形狀的四個角。
x1 = cx + radialScale*radiusStep*cos(rotationScale * rotationStep)
y1 = cy + radialScale*radiusStep*sin(rotationScale * rotationStep)
x2 = cx + radialScale*(radiusStep+1)*cos(rotationScale * rotationStep)
y2 = cy + radialScale*(radiusStep+1)*sin(rotationScale * rotationStep)
x3 = cx + radialScale*radiusStep*cos(rotationScale*(rotationStep+1))
y3 = cy + radialScale*radiusStep*sin(rotationScale*(rotationStep+1))
x4 = cx + radialScale*(radiusStep+1)*cos(rotationScale*(rotationStep+1))
y4 = cy + radialScale*(radiusStep+1)*sin(rotationScale*(rotationStep+1))
其中(cx,cy)是中心點 - 在你的情況下(maxX/2,maxY/2)。
常量rotationScale和radialScale只是將步驟放大到整個範圍。例如,如果您有n個扇區,則rotationScale爲2PI/n。如果你有m個「帶」,radialScale是R/m,網中最外層的圓的半徑是R.希望這是有道理的。
這裏的想法就像在一個規則的網格。
現在只畫與點之間的四行瞧!
大多數圖形軟件包也有一個DrawArc
排序方法。這可以用來繪製出性能非常高的兩個圓弧,同時使它看起來更漂亮!
非常感謝,這看起來非常好,我會試一試! – 2012-04-08 19:32:12
那麼我已經有2行了,我有兩個圓圈,現在我怎麼得到4個矩形點?也許在僞代碼?謝謝! – 2012-04-06 15:21:18
當你說你有他們時,你的意思是什麼?你有沒有找到使你感興趣的領域的2線和2個圈子? – 2012-04-06 16:07:23
Mk,是的,我有這個,但我仍然不太確定如何繪製矩形(或6 +點折線)。我通過將點位置除以radiusStep得到的圓圈,通過'math.ceil(math.ceil((math.atan((app.center.y - point.y)/(app.center.x - point.x))* 180)/ math.pi)/ app.rotationStep)' – 2012-04-07 10:23:43