From f020830fdb69968b46f24c48869635d28211963d Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 22 Oct 2010 15:56:48 -0400 Subject: Fix inside calculation for cones. --- libdimension/cylinder.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'libdimension/cylinder.c') diff --git a/libdimension/cylinder.c b/libdimension/cylinder.c index 62c1476..1c08b7c 100644 --- a/libdimension/cylinder.c +++ b/libdimension/cylinder.c @@ -150,6 +150,9 @@ static bool dmnsn_cylinder_inside_fn(const dmnsn_object *cylinder, dmnsn_vector point) { point = dmnsn_transform_vector(cylinder->trans_inv, point); - return point.x*point.x + point.z*point.z < 1 - && point.y > -1.0 && point.y < 1.0; + dmnsn_cylinder_payload *payload = cylinder->ptr; + double r1 = payload->r1, r2 = payload->r2; + double r = (point.y*(r2 - r1) + r1 + r2)/2.0; + return point.x*point.x + point.z*point.z < r*r + && point.y > -1.0 && point.y < 1.0; } -- cgit v1.2.3