summaryrefslogtreecommitdiffstats
path: root/libdimension-python/tests
diff options
context:
space:
mode:
Diffstat (limited to 'libdimension-python/tests')
-rwxr-xr-xlibdimension-python/tests/demo.py138
-rwxr-xr-xlibdimension-python/tests/geometry.py23
2 files changed, 140 insertions, 21 deletions
diff --git a/libdimension-python/tests/demo.py b/libdimension-python/tests/demo.py
index fd4d193..4b68114 100755
--- a/libdimension-python/tests/demo.py
+++ b/libdimension-python/tests/demo.py
@@ -24,29 +24,145 @@ from dimension import *
# Treat warnings as errors for tests
dieOnWarnings(True)
+# Canvas
canvas = Canvas(width = 768, height = 480)
havePNG = True
try:
- canvas.optimizePNG()
+ canvas.optimizePNG()
except OSError as e:
- if e.errno == errno.ENOSYS:
- havePNG = False
- else:
- raise
+ if e.errno == errno.ENOSYS:
+ havePNG = False
+ else:
+ raise
+# Camera
camera = PerspectiveCamera(location = (0, 0.25, -4),
- look_at = Zero)
+ lookAt = 0)
camera.transform(rotate(53*Y))
+# Lights
+lights = [
+ PointLight(location = (-15, 20, 10), color = White),
+]
+
+# Objects
+
+hollowCube = Difference(
+ [
+ Box(
+ (-1, -1, -1), (1, 1, 1),
+
+ texture = Texture(
+ pigment = Color(0, 0, 1, trans = 0.75, filter = 1/3),
+ finish = Reflection(0.5),
+ ),
+ interior = Interior(
+ ior = 1.1,
+ ),
+ )
+ .transform(rotate(45*X)),
+
+ Sphere(
+ center = 0, radius = 1.25,
+ texture = Texture(
+ pigment = Green,
+ finish = Phong(strength = 0.2, size = 40),
+ ),
+ )
+ ],
+)
+
+arrow = Union(
+ [
+ Cylinder(bottom = -1.25*Y, top = 1.25*Y, radius = 0.1),
+ Cone(
+ bottom = 1.25*Y, bottomRadius = 0.1,
+ top = 1.5*Y, topRadius = 0,
+ open = True
+ ),
+ ],
+ texture = Texture(
+ pigment = ColorMap(
+ Gradient(Y),
+ {
+ 0/6: Red,
+ 1/6: Orange,
+ 2/6: Yellow,
+ 3/6: Green,
+ 4/6: Blue,
+ 5/6: Magenta,
+ 6/6: Red,
+ },
+ )
+ .transform(scale(1, 2.75, 1))
+ .transform(translate(-1.25*Y)),
+ ),
+)
+arrow.transform(rotate(-45*X))
+
+torii = Union(
+ [
+ Torus(majorRadius = 0.15, minorRadius = 0.05)
+ .transform(translate(-Y)),
+
+ Torus(majorRadius = 0.15, minorRadius = 0.05),
+
+ Torus(majorRadius = 0.15, minorRadius = 0.05)
+ .transform(translate(Y)),
+ ],
+ texture = Texture(
+ pigment = Blue,
+ finish = Ambient(1),
+ ),
+)
+torii.transform(rotate(-45*X))
+
+ground = Plane(
+ normal = Y, distance = -2,
+
+ texture = Texture(
+ pigment = PigmentMap(
+ Checker(),
+ [
+ White,
+ ColorMap(Checker(), [Black, White]).transform(scale(1/3, 1/3, 1/3))
+ ],
+ ),
+ ),
+)
+
objects = [
- Sphere(radius = 1, center = Zero)
+ hollowCube,
+ arrow,
+ torii,
+ ground,
]
-scene = Scene(canvas = canvas,
- camera = camera,
- objects = objects)
+# Sky sphere
+skySphere = SkySphere(
+ [
+ ColorMap(
+ pattern = Gradient(Y),
+ map = {
+ 0: Orange,
+ 0.35: Color(0, 0.1, 0.2, trans = 0.1, filter = 0.0),
+ },
+ ),
+ ]
+)
+
+# Scene
+scene = Scene(canvas = canvas,
+ objects = objects,
+ lights = lights,
+ camera = camera)
+scene.defaultTexture = Texture(finish = Ambient(0.1) + Diffuse(0.6))
+scene.background = Clear
+scene.skySphere = skySphere
+scene.adcBailout = 1/255
+scene.recursionLimit = 5
scene.raytrace()
if havePNG:
- canvas.writePNG('demo.png')
+ canvas.writePNG('demo.png')
diff --git a/libdimension-python/tests/geometry.py b/libdimension-python/tests/geometry.py
index 0c53ad6..c1d4f48 100755
--- a/libdimension-python/tests/geometry.py
+++ b/libdimension-python/tests/geometry.py
@@ -24,10 +24,13 @@ from dimension import *
# Treat warnings as errors for tests
dieOnWarnings(True)
-assert Zero == Vector(0, 0, 0), Zero
-assert X == Vector(1, 0, 0), X
-assert Y == Vector(0, 1, 0), Y
-assert Z == Vector(0, 0, 1), Z
+assert 0 == Vector(0, 0, 0), Vector(0)
+assert X == Vector(1, 0, 0), X
+assert Y == Vector(0, 1, 0), Y
+assert Z == Vector(0, 0, 1), Z
+
+assert Vector((1, 2, 3)) == Vector(1, 2, 3), Vector((1, 2, 3))
+assert Vector(X) == X, Vector(X)
v = Vector(1.5, 2.5, 3.5)
@@ -44,15 +47,15 @@ assert v.normalized() == v/7, v.normalized()
assert v + v == 2*v == v*2 == Vector(4, 6, 12), v + v
assert v/2 == v - v/2 == Vector(1, 1.5, 3), v/2
assert +v == v, +v
-assert v + -v == Zero, v + -v
-assert cross(v, v) == Zero, cross(v, v)
+assert v + -v == 0, v + -v
+assert cross(v, v) == 0, cross(v, v)
assert dot(v, v) == v.norm()**2, dot(v, v)
assert v, bool(v)
-assert not Zero, not Zero
+assert not Vector(0), not Vector(0)
assert proj(v, X) == 2*X, proj(v, X)
-m = Matrix(1, 2, 3, 4,
- 5, 6, 7, 8,
+m = Matrix(1, 2, 3, 4,
+ 5, 6, 7, 8,
9, 10, 11, 12)
assert repr(m) == 'dimension.Matrix(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, \
@@ -68,7 +71,7 @@ assert s == Matrix(1, 0, 0, 0,
0, 2, 0, 0,
0, 0, 3, 0), s
-t = translate((1, 2, 3))
+t = translate(1, 2, 3)
assert t == Matrix(1, 0, 0, 1,
0, 1, 0, 2,
0, 0, 1, 3), t