|
|
1
1
你需要一个矩阵变换T,这样T X=X',其中X是矩阵,它的列是第一个三角形顶点的坐标,X'对于第二个三角形是相同的。每边乘以X的倒数得到T=X'X . |
|
|
2
5
所以,作为一个解释,我要改变一下你的符号。考虑3对向量(它们对应于问题中两个三角形的顶点): u = <u0, u1, u2, 1> u' = <u0', u1', u2', 1> v = <v0, v1, v2, 1> v' = <v0', v1', v2', 1> w = <w0, w1, w2, 1> w' = <w0', w1', w2', 1> 通常情况下,你的问题可以通过识别形式的线性变换来解决: |a0,0 a0,1 a0,2 a0,3|
A = |a1,0 a1,1 a1,2 a1,3|
|a2,0 a2,1 a2,2 a2,3|
|0 0 0 1 |
Au = u' Av = v' Aw = w' 这个公式是必要的,因为变换似乎是一个三维仿射变换,而不是一个三维线性变换。如果是线性变换,任何包含原点的三角形都必须映射到另一个包含原点的三角形。扩展到4-D空间允许使用4-D线性变换来执行3-D仿射变换。 也就是说,首先要注意的是这个问题是欠约束的(9个方程有12个未知数);没有唯一的解。事实上有无限多个。但是,您的问题比这更受限制,因此还有一些希望。在给定向量的情况下,有额外的约束 p = <p0, p1, p2, 1> 找到 Ap = p' = <p0', p1', p2', 1> 这样(使用你的定义向量 一 , ,和 c级 ) |u - p| |u' - p'| ------- = --------- |u - a| |u' - Aa| |v - p| |v' - p'| ------- = --------- |v - b| |v' - Ab| |w - p| |w' - p'| ------- = --------- |w - c| |w' - Ac|
虽然这为您的问题提供了一个额外的约束条件,但它将问题从使用线性方法很容易解决的约束条件更改为需要解决的约束条件 Convex Programming
也就是说,这里有一些可能的方法:
更新:
我已经考虑过了,我看到了一种不使用凸规划生成正确仿射变换的方法。这可以通过为每个三角形生成第四个顶点来实现,称为
y = u + (v-u)Ã(w-u) y' = u' + (v'-u')Ã(w'-u')
哪里
M = <u, v, w, y> M' = <u', v', w', y'> 并使用史蒂夫·埃默森建议的方法(用4-D而不是3-D): AM = M' AMM-1 = M'M-1 A = M'M-1 |
|
3
3
我想你可能在找重心坐标? |
|
|
4
3
检查andand的理论评论 //Qt代码
以及这段代码的视频: http://www.youtube.com/watch?v=yOU90pBoyZY |
|
|
5
0
只需将向量添加到每个点。点+向量==新点。这基本上与首先创建向量相反:V1==(x1'-x1,y1'-y1,z1'-z1),所以(x1',y1',z1')==(x1+V1x,y1+v1y,z1+V1z)。 |
|
|
6
0
那么 x'=±x1'+x2'+x3' 所以呢
|
|
|
user20003920 · 如何对x y数据进行降采样? 1 年前 |
|
|
John Marston · 如何创建三个角度相等的三维矢量? 2 年前 |
|
|
Swike · 如何在matplotlib中为重叠的圆上色? 2 年前 |
|
|
For · 如何使用c++中的=运算符分别分配复变量的实部和虚部? 2 年前 |
|
|
ryanx · html中的长lat标识符 2 年前 |
|
|
hosoo · 如何在python中找到平面方程 3 年前 |
|
|
Georgia Nissen · 检查两个列表的圆重叠 3 年前 |
|
|
wzl · 如何使用POI绘制圆(而不是椭圆) 3 年前 |