Text archives Help
- From: jsimkins@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [MANTA] r988 - trunk/Model/Primitives
- Date: Tue, 14 Mar 2006 17:03:18 -0700 (MST)
Author: jsimkins
Date: Tue Mar 14 17:03:17 2006
New Revision: 988
Modified:
trunk/Model/Primitives/CMakeLists.txt
trunk/Model/Primitives/Cylinder.cc
trunk/Model/Primitives/Cylinder.h
Log:
Try to resurrect cylinder. Compiles but still doesn't work.
Modified: trunk/Model/Primitives/CMakeLists.txt
==============================================================================
--- trunk/Model/Primitives/CMakeLists.txt (original)
+++ trunk/Model/Primitives/CMakeLists.txt Tue Mar 14 17:03:17 2006
@@ -6,9 +6,8 @@
Primitives/Cone.h
Primitives/Cube.cc
Primitives/Cube.h
- # Cylinder needs to be fixed before using.
-# Primitives/Cylinder.cc
-# Primitives/Cylinder.h
+ Primitives/Cylinder.cc
+ Primitives/Cylinder.h
Primitives/Disk.cc
Primitives/Disk.h
Primitives/HeavyTriangle.cc
Modified: trunk/Model/Primitives/Cylinder.cc
==============================================================================
--- trunk/Model/Primitives/Cylinder.cc (original)
+++ trunk/Model/Primitives/Cylinder.cc Tue Mar 14 17:03:17 2006
@@ -1,5 +1,5 @@
-#include <Packages/manta/Model/Primitives/Cylinder.h>
-#include <Packages/manta/Interface/RayPacket.h>
+#include <Model/Primitives/Cylinder.h>
+#include <Interface/RayPacket.h>
#include <Core/Geometry/BBox.h>
#include <Core/Exceptions/BadPrimitive.h>
@@ -21,17 +21,16 @@
{
Vector axis(top-bottom);
axis.normalize();
- bbox.extend_disc(bottom, axis, radius);
- bbox.extend_disc(top, axis, radius);
+ bbox.extendByDisc(bottom, axis, radius);
+ bbox.extendByDisc(top, axis, radius);
}
void Cylinder::intersect(const RenderContext&, RayPacket& rays) const
{
- for(int i=0; i<rays.getSize(); i++) {
- RayPacket::Element& e = rays.get(i);
- Vector v(xform.project(e.ray.direction()));
+ for(int i=rays.begin(); i<rays.end(); i++) {
+ Vector v(xform * rays.getDirection(i));
double dist_scale=v.normalize();
- Ray xray(xform.project(e.ray.origin()), v);
+ Ray xray(xform * rays.getOrigin(i), v);
double dx=xray.direction().x();
double dy=xray.direction().y();
double a=dx*dx+dy*dy;
@@ -58,9 +57,9 @@
double z1=oz+t1*dz;
double z2=oz+t2*dz;
if(t1 > 1.e-6 && z1 > 0.0 && z1 < 1.0){
- e.hitInfo.hit(t1/dist_scale, getMaterial(), this,
getTexCoordMapper());
+ rays.hit(i, t1/dist_scale, getMaterial(), this,
getTexCoordMapper());
} else if(t2 > 1.e-6 && z2 > 0.0 && z2 < 1.0){
- e.hitInfo.hit(t2/dist_scale, getMaterial(), this,
getTexCoordMapper());
+ rays.hit(i, t2/dist_scale, getMaterial(), this,
getTexCoordMapper());
}
}
}
@@ -70,12 +69,28 @@
void Cylinder::computeNormal(const RenderContext&, RayPacket& rays) const
{
rays.computeHitPositions();
- for(int i=0; i<rays.getSize(); i++) {
- RayPacket::Element& e = rays.get(i);
- Vector xn(xform.project(e.hitPosition).asVector());
- xn.z(0.0);
- Vector v=ixform.project(xn);
+ for(int i=rays.begin(); i < rays.end(); i++) {
+ Vector xn(xform * Vector(rays.getHitPosition(i)));
+ xn[2]=0.0;
+ Vector v=ixform * xn;
v.normalize();
- e.normal = v;
+ rays.setNormal(i, v);
}
+}
+
+
+void Cylinder::computeTexCoords2(const RenderContext&,
+ RayPacket& rays) const
+{
+ for(int i=rays.begin();i<rays.end();i++)
+ rays.setTexCoords(i, rays.scratchpad<Point>(i));
+ rays.setFlag(RayPacket::HaveTexture2|RayPacket::HaveTexture3);
+}
+
+void Cylinder::computeTexCoords3(const RenderContext&,
+ RayPacket& rays) const
+{
+ for(int i=rays.begin();i<rays.end();i++)
+ rays.setTexCoords(i, rays.scratchpad<Point>(i));
+ rays.setFlag(RayPacket::HaveTexture2|RayPacket::HaveTexture3);
}
Modified: trunk/Model/Primitives/Cylinder.h
==============================================================================
--- trunk/Model/Primitives/Cylinder.h (original)
+++ trunk/Model/Primitives/Cylinder.h Tue Mar 14 17:03:17 2006
@@ -20,6 +20,10 @@
BBox& bbox) const;
virtual void intersect(const RenderContext& context, RayPacket& rays)
const ;
virtual void computeNormal(const RenderContext& context, RayPacket
&rays) const;
+ virtual void computeTexCoords2(const RenderContext& context,
+ RayPacket& rays) const;
+ virtual void computeTexCoords3(const RenderContext& context,
+ RayPacket& rays) const;
private:
Vector bottom, top;
- [MANTA] r988 - trunk/Model/Primitives, jsimkins, 03/14/2006
Archive powered by MHonArc 2.6.16.