Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changed FloatEuclidTransform translation from point to vector. #994

Merged
merged 1 commit into from
Dec 3, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions source/geometry/FloatEuclidTransform.ooc
Original file line number Diff line number Diff line change
Expand Up @@ -17,27 +17,27 @@
use ooc-collections
import math
use ooc-math
import FloatPoint3D
import FloatVector3D
import FloatRotation3D
import FloatTransform2D
import FloatTransform3D
import Quaternion

FloatEuclidTransform: cover {
rotation: FloatRotation3D
translation: FloatPoint3D
translation: FloatVector3D
scaling: Float

inverse ::= This new(-this translation, this rotation inverse, 1.0f / this scaling)
transform ::= FloatTransform3D createScaling(this scaling, this scaling, 1.0f) * FloatTransform3D createTranslation(this translation) * this rotation transform

init: func@ ~default { this init(FloatPoint3D new(), FloatRotation3D identity, 1.0f) }
init: func@ ~translationAndRotation (translation: FloatPoint3D, rotation: FloatRotation3D) { this init(translation, rotation, 1.0f) }
init: func@ ~default { this init(FloatVector3D new(), FloatRotation3D identity, 1.0f) }
init: func@ ~translationAndRotation (translation: FloatVector3D, rotation: FloatRotation3D) { this init(translation, rotation, 1.0f) }
init: func@ ~full (=translation, =rotation, =scaling)
init: func@ ~fromTransform (transform: FloatTransform2D) {
rotationZ := atan(- transform d / transform a)
scaling := ((transform a * transform a + transform b * transform b) sqrt() + (transform d * transform d + transform e * transform e) sqrt()) / 2.0f
this init(FloatPoint3D new(transform g, transform h, 0.0f), FloatRotation3D createRotationZ(rotationZ), scaling)
this init(FloatVector3D new(transform g, transform h, 0.0f), FloatRotation3D createRotationZ(rotationZ), scaling)
}
operator + (other: This) -> This { This new(this translation + other translation, this rotation * other rotation, this scaling * other scaling) }
operator - (other: This) -> This { This new(this translation - other translation, this rotation * other rotation inverse, this scaling / other scaling) }
Expand Down
6 changes: 3 additions & 3 deletions test/geometry/FloatEuclidTransformTest.ooc
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ FloatEuclidTransformTest: class extends Fixture {
euclidTransforms := VectorList<FloatEuclidTransform> new(5)
kernel := FloatVectorList new(5)
for (i in 0 .. 5) {
euclidTransforms add(FloatEuclidTransform new(FloatPoint3D new(i, i, i), FloatRotation3D identity))
euclidTransforms add(FloatEuclidTransform new(FloatVector3D new(i, i, i), FloatRotation3D identity))
kernel add(0.2f)
}
result := FloatEuclidTransform convolveCenter(euclidTransforms, kernel)
Expand All @@ -28,7 +28,7 @@ FloatEuclidTransformTest: class extends Fixture {
euclidTransforms := VectorList<FloatEuclidTransform> new(5)
kernel := FloatVectorList gaussianKernel(5)
for (i in 0 .. 5)
euclidTransforms add(FloatEuclidTransform new(FloatPoint3D new(i, i, i), FloatRotation3D identity))
euclidTransforms add(FloatEuclidTransform new(FloatVector3D new(i, i, i), FloatRotation3D identity))
result := FloatEuclidTransform convolveCenter(euclidTransforms, kernel)

expectedResult := 0.0f
Expand All @@ -50,7 +50,7 @@ FloatEuclidTransformTest: class extends Fixture {
for (i in 0 .. 5) {
rotation := FloatRotation3D createRotationZ(i)
quaternions add(rotation _quaternion)
euclidTransforms add(FloatEuclidTransform new(FloatPoint3D new(), rotation))
euclidTransforms add(FloatEuclidTransform new(FloatVector3D new(), rotation))
}
result := FloatEuclidTransform convolveCenter(euclidTransforms, kernel)
expectedRotation := Quaternion weightedMean(quaternions, kernel)
Expand Down
8 changes: 4 additions & 4 deletions test/geometry/FloatEuclidTransformVectorListTest.ooc
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ FloatEuclidTransformVectorListTest: class extends Fixture {
tolerance := 0.0001f
this add("get and set", func {
list := FloatEuclidTransformVectorList new()
euclidTransform1 := FloatEuclidTransform new(FloatPoint3D new(1.0f, 2.0f, 3.0f), FloatRotation3D createRotationX(1.0f))
euclidTransform2 := FloatEuclidTransform new(FloatPoint3D new(5.0f, 6.0f, 7.0f), FloatRotation3D createRotationX(1.0f))
euclidTransform1 := FloatEuclidTransform new(FloatVector3D new(1.0f, 2.0f, 3.0f), FloatRotation3D createRotationX(1.0f))
euclidTransform2 := FloatEuclidTransform new(FloatVector3D new(5.0f, 6.0f, 7.0f), FloatRotation3D createRotationX(1.0f))
list add(euclidTransform1)
list add(euclidTransform2)
expect(list[0] translation x, is equal to(euclidTransform1 translation x) within(tolerance))
Expand All @@ -42,8 +42,8 @@ FloatEuclidTransformVectorListTest: class extends Fixture {
})
this add("get lists", func {
list := FloatEuclidTransformVectorList new()
translation1 := FloatPoint3D new(1.11f, 2.31f, 3.64f)
translation2 := FloatPoint3D new(2.85f, 3.18f, 4.26f)
translation1 := FloatVector3D new(1.11f, 2.31f, 3.64f)
translation2 := FloatVector3D new(2.85f, 3.18f, 4.26f)
rotation1 := FloatRotation3D new(Quaternion new(1.21f, 2.31f, 3.14f, 4.23f))
rotation2 := FloatRotation3D new(Quaternion new(2.51f, 3.12f, 4.41f, 5.42f))
scaling1 := 5.72f
Expand Down