extends CSGCylinder # Declare member variables here. Examples: # var a = 2 # var b = "text" # Called when the node enters the scene tree for the first time. func _ready(): var orig01 = Vector3(-1, -1, 1) var orig02 = Vector3(1, -1, 1) var orig03 = Vector3(-1, 1, 1) var orig04 = Vector3(2, -5, 1) var dest01 = Vector3(-3, -7, 1) var dest02 = Vector3(7, -3, 1) var dest03 = Vector3(-7, 7, 1) var dest04 = Vector3(4, 8, 1) print(str(dest01) + "\n" + str(dest02) + "\n" + str(dest03) + "\n" + str(dest04) + "\n") var a_ = Basis( Vector3(orig01.x, orig02.x, orig03.x), Vector3(orig01.y, orig02.y, orig03.y), Vector3.ONE ) var a_inverse = a_.inverse() var a_coeff = a_inverse.xform(orig04) print(orig04) print(a_coeff) print(str(a_.xform(a_coeff)) + "\n") var A = Basis( Vector3(orig01.x * a_coeff.x, orig02.x * a_coeff.y, orig03.x * a_coeff.z), Vector3(orig01.y * a_coeff.x, orig02.y * a_coeff.y, orig03.y * a_coeff.z), a_coeff ) print(str(A) + "\n") var A_inverse = A.inverse() print(str(A_inverse)) print(str(A * A_inverse) + "\n") var b_ = Basis( Vector3(dest01.x, dest02.x, dest03.x), Vector3(dest01.y, dest02.y, dest03.y), Vector3(dest01.z, dest02.z, dest03.z) ) var b_inverse = b_.inverse() var b_coeff = b_inverse.xform(dest04) var B = Basis( Vector3(dest01.x * b_coeff.x, dest02.x * b_coeff.y, dest03.x * b_coeff.z), Vector3(dest01.y * b_coeff.x, dest02.y * b_coeff.y, dest03.y * b_coeff.z), b_coeff ) var C = A_inverse * B print(str(B)) print(str(b_coeff) + "\n") print(str(C) + "\n") var proof01 = C.xform(orig01) var proof02 = C.xform(orig02) var proof03 = C.xform(orig03) var proof04 = C.xform(orig04) print(str(proof01) + "\n" + str(proof02) + "\n" + str(proof03) + "\n" + str(proof04)) func adj(m: Basis): return Basis( Vector3( m[1][1] * m[2][2] - m[1][2] * m[2][1], m[0][2] * m[2][1] - m[0][1] * m[2][2], m[0][1] * m[1][2] - m[0][2] * m[1][1] ), Vector3( m[1][2] * m[2][0] - m[1][0] * m[2][2], m[0][0] * m[2][2] - m[0][2] * m[2][0], m[0][2] * m[1][0] - m[0][0] * m[1][2] ), Vector3( m[1][0] * m[2][1] - m[1][1] * m[2][0], m[0][1] * m[2][0] - m[0][0] * m[2][1], m[0][0] * m[1][1] - m[0][1] * m[1][0] ) )