media @ VU
math-hold.vr
math-hold.vr
(wrl
)
[ flux /
bitmanagement /
cortona /
octaga
]
proto
PROTO asphere [
field SFInt32 nlatitude 16
field SFInt32 nlongitude 16
field SFFloat creaseAngle 3.14
]
{
DEF IFS IndexedFaceSet {
coord DEF C Coordinate { }
texCoord DEF TC TextureCoordinate { }
creaseAngle IS creaseAngle
}
DEF S Script {
field SFInt32 nlat IS nlatitude
field SFInt32 nl IS nlongitude
##eventOut MFVec3f c
eventOut MFVec3f c
eventOut MFVec2f tc
eventOut MFInt32 ci
url [
"javascript:
function initialize() {
var r, phi, x, y, z;
var i, j, idx;
// Compute coordinates, texture coordinates:
for (i = 0; i < nlat; i++) {
//y = 2 * ( i / (nlat-1) ) - 1;
y = 2 * ( i / (nlat-1) ) - 1;
r = Math.sqrt( 1 - y*y );
for (j = 0; j < nl; j++) {
phi = 2 * Math.PI * j / nl;
x = -Math.sin(phi)*r;
z = -Math.cos(phi)*r;
c[i*nl+j] = new SFVec3f(x,y,z);
tc[i*nl+j] = new SFVec2f( j/nl, i/(nlat-1) );
}
}
// And compute indices:
for (i = 0; i < nlat-1; i++) {
for (j = 0; j < nl; j++) {
idx = 5*(i*nl+j);
ci[idx+0] = i*nl+j;
ci[idx+1] = i*nl+(j+1)\%nl;
ci[idx+2] = (i+1)*nl+(j+1)\%nl;
ci[idx+3] = (i+1)*nl+j;
ci[idx+4] = -1; // end-of-polygon
}
}
}"
]
}
ROUTE S.c TO C.set_point
ROUTE S.tc TO TC.set_point
ROUTE S.ci TO IFS.set_coordIndex
}
Background { skyColor [0.9 .1 .1] }
NavigationInfo { type ["EXAMINE", "ANY"] }
Viewpoint {
position 0 0 10
orientation 0 0 1 0
}
Transform {
translation 0 0 0
scale 2 2 2
children [
Shape {
appearance DEF A Appearance {
material Material {}
##texture ImageTexture { url ["local/images/check.gif"] }
texture ImageTexture { url ["@logo.jpg"] }
}
##geometry asphere { nlatitude 32 nlongitude 20 }
geometry asphere { nlatitude 100 nlongitude 100 }
}
]
}
(C) A. Eliëns
21/5/2007
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.