From 71b149ad617a7cbca08a2a7cb8ca5e3b0d8143db Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Tue, 26 Oct 2010 19:25:07 -0400 Subject: Add torii to dimension. --- dimension/realize.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'dimension/realize.c') diff --git a/dimension/realize.c b/dimension/realize.c index b5f6e50..18de230 100644 --- a/dimension/realize.c +++ b/dimension/realize.c @@ -916,6 +916,22 @@ dmnsn_realize_sphere(dmnsn_astnode astnode) return sphere; } +static dmnsn_object * +dmnsn_realize_torus(dmnsn_astnode astnode) +{ + dmnsn_assert(astnode.type == DMNSN_AST_TORUS, "Expected a torus."); + + dmnsn_astnode major, minor; + dmnsn_array_get(astnode.children, 0, &major); + dmnsn_array_get(astnode.children, 1, &minor); + + double R = dmnsn_realize_float(major); + double r = dmnsn_realize_float(minor); + + dmnsn_object *torus = dmnsn_new_torus(R, r); + return torus; +} + static dmnsn_object * dmnsn_realize_plane(dmnsn_astnode astnode) { @@ -1064,6 +1080,9 @@ dmnsn_realize_object(dmnsn_astnode astnode, dmnsn_array *lights) case DMNSN_AST_SPHERE: object = dmnsn_realize_sphere(onode); break; + case DMNSN_AST_TORUS: + object = dmnsn_realize_torus(onode); + break; case DMNSN_AST_UNION: object = dmnsn_realize_union(onode, modifiers, lights); break; -- cgit v1.2.3