請耐心等待 - 我發現這很難解釋。跨多個平面的三角測量
這更多的是一個三角函數問題,但它的重要性在JavaScript/KineticJS中。
我有一系列'包含'行和'處理的'組。這種方式的工作方式,最適合每個小組都有自己的座標平面。我在尋求幫助的問題是這種解決方案不理想的唯一情況。
當這些組旋轉時,它們的座標平面也旋轉。這允許組對象被重用,並且其子女可以從組的起源進行測量,而不用擔心父組的方向。起來總是起來......我的小組面臨哪種方式並不重要。
我是一個新的海報,所以我不能添加圖像。不過,我認爲看到它至關重要。請參閱http://i.imgur.com/WUVXE.png
目標是將紅色圓弧('手柄')的未連接點附加到藍色線條('線條')上的黑點。爲了演示目的,我已將其設置爲始終繪製90度。
儘管約定,我使用的API順時針旋轉,給紅線的角度爲0,黃線的角度爲116,綠色180和藍色296 - 所有相對於左上角相同的原點的屏幕。這些角度會發生變化,所以我正在尋找公式來計算紅色手柄的新終點。
X軸始終沿着每條線的中間向下行進。該行寬度爲20px,所以在「死區」的上方或下方有10px。紅色手柄上的兩個正確點是(10,10)和(30,10)。手柄的半徑爲20px。
由於紅色和藍色組的平面不同,因此無法說red.arcEndX = blue.blackDotX,red.arcEndY = blue.blackDotY。例如,紅色(0,0)總是等於藍色(200,0)。把每條線想象成一條無法分離的鏈條。
那麼,我該如何計算紅色弧線的剩餘點呢?它應該無縫地連接到藍線的邊緣,恰好在藍線上黑點的中心點被轉換到紅色座標平面的地方。
我可能需要的所有測量結果都可用,或可以進行計算。
Handle.prototype.update = function() {
/* if we are the red group, this.parent is our group and
'prev' is the blue group. */
var prev = this.parent.getPrev();
// somehow get the new (x,y) for point2 below:
/* KineticJS SVG string. this.origin and this.point1 never
change. This (M)oves to 10,10, draws a (L)ine from
this.origin.x, this.origin.y to this.point1.x, this.point1.y
and (C)urves to this.point2.x, this.point2.y. this.centerXY
is the control point of that curve. */
this.data = "M" + this.origin + "L" + this.point1 + "C" + this.point1 + "," + this.centerXY + "," + this.point2 + "L" + this.origin + "z";
this.shape.setData(this.data);
}
如果有人絆倒在這 - 我有什麼是正確的,除非我不能容納原點翻譯。如果你把每個飛機的一切都移動到(0,0),那麼做你的罪/ cos,那麼你會沒事的。 – oooyaya