考虑下面的图片
1.所以有4个三角形的右手图,而不是3,这使得更多的意义上,我已经更新了基于反馈Steven_W形象!
2.再次更新图像标记子三角形为A,B,C,d为灰色
什么是映射坐标(x,y)的左手方,使得坐标(U,V)的矩形的边界右侧的三角形,使得点的映射点之间的内插中产生的伪算法如图所示在图上?
1至4是从左至右,即使我的例证是周围的边缘有点粗糙三角形等距:)
这是为了生成用于从所述上半部的360度全景照片一个天空盒的盖子粗略的面板。
更新3根据反馈
第一步似乎是工作出我们在用于基于所述(X,Y)的左手图,它三角坐标。
第二陡峭的是沿着三角形的顶点锻炼身体的距离。 然后使用这些距离来获得相关的三角坐标图中右侧
更新4 -代码,以便识别在左手图三角形
Public Function TriangleIndex(ByVal x As Integer, ByVal y As Integer, ByVal w as integer, ByVal h as integer) as integer
Dim AboveForwardSlashDiagonal As Boolean = ((((h * x) + (w * y)) - (h * w)) < 0)
Dim AboveBackSlashDiagonal As Boolean = (((h * x) - (w * y)) > 0)
If AboveForwardSlashDiagonal Then
If AboveBackSlashDiagonal
return 2 ' C
else
return 3 ' D
end if
else
If AboveBackSlashDiagonal
return 1 ' B
else
return 0 ' A
end if
End If
End Function
更新5 -模板代码解决方案
左图w2和h2的w1和H1是尺寸为右图的尺寸
Private Function TranslateToTriangle(ByVal x1 As Integer, ByVal y1 As Integer, ByVal w1 As Integer, ByVal h1 As Integer, ByVal w2 As Integer, ByVal h2 As Integer) As System.Drawing.Point
Dim ReturnPoint As New System.Drawing.Point
select case TriangleIndex(x1,y1,w1,h1)
case 0
case 1
case 2
case 3
end select
Return ReturnPoint
End Function
更新6公式三角形的面积给它的长度-这可能是在计算重心的权重有帮助吗?
Private Function AreaOfTriangle(ByVal LengthA As Single, ByVal LengthB As Single, ByVal LengthC As Single) As Single
Dim Perimeter As Single = LengthA + LengthB + LengthC
Return 1 / 4 * Math.Sqrt(Perimeter * (Perimeter - 2 * LengthA) * (Perimeter - 2 * LengthB) * (Perimeter - 2 * LengthC))
End Function