Skip to content

Commit f5545ce

Browse files
committed
Move extras to their own folder
1 parent 2a83322 commit f5545ce

26 files changed

+602
-385
lines changed

demos/builtinshapes.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
canvas { width:100%; height:100%; overflow: hidden; }
66
</style>
77
<script type="text/javascript" src="../glutil_min.js"></script>
8-
<script type="text/javascript" src="../camera.js"></script>
9-
<script type="text/javascript" src="../frame.js"></script>
8+
<script type="text/javascript" src="../extras/camera.js"></script>
9+
<script type="text/javascript" src="../extras/frame.js"></script>
1010
<script type="text/javascript" src="demoutil.js"></script>
1111
</head>
1212
<body>

demos/clock.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
canvas { width:100%; height:100%; overflow: hidden; }
66
</style>
77
<script type="text/javascript" src="../glutil_min.js"></script>
8-
<script type="text/javascript" src="../camera.js"></script>
9-
<script type="text/javascript" src="../frame.js"></script>
8+
<script type="text/javascript" src="../extras/camera.js"></script>
9+
<script type="text/javascript" src="../extras/frame.js"></script>
1010
<script type="text/javascript" src="demoutil.js"></script>
1111
</head>
1212
<body>

demos/curves.html

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@
55
canvas { width:100%; height:100%; overflow: hidden; }
66
</style>
77
<script type="text/javascript" src="../glutil_min.js"></script>
8-
<script type="text/javascript" src="../camera.js"></script>
9-
<script type="text/javascript" src="../frame.js"></script>
10-
<script type="text/javascript" src="extras.js"></script>
8+
<script type="text/javascript" src="../extras/camera.js"></script>
9+
<script type="text/javascript" src="../extras/frame.js"></script>
10+
<script type="text/javascript" src="../extras/curvetube.js"></script>
1111
<script type="text/javascript" src="demoutil.js"></script>
1212
</head>
1313
<body>
14-
<div style="position:absolute;left:0;top:1em" id=links>
14+
<div style="position:absolute;left:0;top:1em">
15+
<div id=links></div>
16+
<div id=settings></div>
1517
</div>
16-
<div id="settings" style="position:absolute;left:0;top:4em"></div>
1718
<canvas id=canvas>
1819
</canvas>
1920
<script id="demo">
@@ -154,18 +155,17 @@
154155
}
155156
}
156157
function makeThinCurveMesh(curve){
157-
return makeMesh(new ExtrudedTube(curve,0.025),150,20)
158+
return makeMesh(new CurveTube(curve,0.025),150,20)
158159
}
159160

160161
var shapeGroup=new ShapeGroup();
161162
var allsettings={}
162163
var link0=null;
163164

164-
165165
addLink("Torus knot",link0=function(){
166166
pushSettings(function(allsettings){
167167
return makeMesh(
168-
new ExtrudedTube(new TorusKnot(
168+
new CurveTube(new TorusKnot(
169169
allsettings["torusknot-p"],
170170
allsettings["torusknot-q"]
171171
)),100);
@@ -178,7 +178,7 @@
178178
addLink("Swept torus knot",function(){
179179
pushSettings(function(allsettings){
180180
return makeMesh(
181-
new ExtrudedTube(new TorusKnot(
181+
new CurveTube(new TorusKnot(
182182
allsettings["torusknot-p"],
183183
allsettings["torusknot-q"]
184184
),0.1,TorusKnot.getFlatCurve(5)),100);
@@ -191,7 +191,7 @@
191191
addLink("Flattened torus knot",function(){
192192
pushSettings(function(allsettings){
193193
return makeMesh(
194-
new ExtrudedTube(TorusKnot.getFlatCurve(
194+
new CurveTube(TorusKnot.getFlatCurve(
195195
allsettings["torusknot-p"]
196196
)),100);
197197
},{

demos/curvesexpr.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
canvas { width:100%; height:100%; overflow: hidden; }
66
</style>
77
<script type="text/javascript" src="../glutil_min.js"></script>
8-
<script type="text/javascript" src="../camera.js"></script>
9-
<script type="text/javascript" src="../frame.js"></script>
8+
<script type="text/javascript" src="../extras/camera.js"></script>
9+
<script type="text/javascript" src="../extras/frame.js"></script>
1010
<script type="text/javascript" src="demoutil.js"></script>
11-
<script type="text/javascript" src="extras.js"></script>
11+
<script type="text/javascript" src="../extras/curvetube.js"></script>
1212
<script type="text/javascript" src="expressions.js"></script>
1313
</head>
1414
<body>
@@ -111,7 +111,7 @@
111111
allsettings["custom-maxv"]
112112
)
113113
document.getElementById("sourceCode").value=cs.getCode();
114-
return makeMesh(new ExtrudedTube(cs),70);
114+
return makeMesh(new CurveTube(cs),70);
115115
}
116116
default:
117117
return new Mesh();

demos/demoutil.js

Lines changed: 3 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -131,120 +131,6 @@ BSplineCurve.clampedKnots=function(controlPoints,degree){
131131
}
132132
}
133133

134-
function meshToJson(mesh){
135-
function colorToHex(x){
136-
var r=Math.round(x[0]*255);
137-
var g=Math.round(x[1]*255);
138-
var b=Math.round(x[2]*255);
139-
r=Math.min(Math.max(r,0),255);
140-
g=Math.min(Math.max(g,0),255);
141-
b=Math.min(Math.max(b,0),255);
142-
return (r<<16)|(g<<8)|b;
143-
}
144-
var roundNum=function(num){
145-
return Math.round(num*1000000)/1000000;
146-
}
147-
var faces=[];
148-
var vertices=[];
149-
var colors=[];
150-
var normals=[];
151-
var texcoords=[[]];
152-
var json={
153-
"metadata":{"formatVersion":3.1},
154-
"materials":[{"DbgColor":0xffffff, "DbgIndex":0,
155-
"DbgName":"Untitled", "colorDiffuse":[1,1,1],
156-
"colorAmbient":[1,1,1],"colorSpecular":[1,1,1],
157-
"specularCoef":5}]
158-
}
159-
json.faces=faces;
160-
json.vertices=vertices;
161-
json.colors=colors;
162-
json.uvs=texcoords;
163-
json.normals=normals;
164-
function pushItemAndMaybeReuse3(obj,x,y,z){
165-
var idx=obj.length;
166-
var index=idx/3;
167-
var endIdx=Math.max(0,idx-48);
168-
for(var i=idx-3;i>=endIdx;i-=3){
169-
if(obj[i]==x && obj[i+1]==y && obj[i+2]==z){
170-
return i/3;
171-
}
172-
}
173-
obj.push(x)
174-
obj.push(y)
175-
obj.push(z)
176-
return index;
177-
}
178-
function pushItemAndMaybeReuse2(obj,x,y){
179-
var idx=obj.length;
180-
var index=idx/2;
181-
var endIdx=Math.max(0,idx-48);
182-
for(var i=idx-2;i>=endIdx;i-=2){
183-
if(obj[i]==x && obj[i+1]==y){
184-
return i/2;
185-
}
186-
}
187-
obj.push(x)
188-
obj.push(y)
189-
return index;
190-
}
191-
function pushItemAndMaybeReuse1(obj,x){
192-
var idx=obj.length;
193-
var index=idx;
194-
var endIdx=Math.max(0,idx-48);
195-
for(var i=idx-1;i>=endIdx;i-=1){
196-
if(obj[i]==x){
197-
return i;
198-
}
199-
}
200-
obj.push(x)
201-
return index;
202-
}
203-
mesh.enumPrimitives(function(prim){
204-
if(prim.length!=3)throw new Error("lines and points not supported");
205-
var idx=faces.length;
206-
var flags=0;
207-
faces.push(0);
208-
for(var j=0;j<3;j++){
209-
faces.push(
210-
pushItemAndMaybeReuse3(vertices,
211-
roundNum(prim[j].position[0]),
212-
roundNum(prim[j].position[1]),
213-
roundNum(prim[j].position[2])))
214-
}
215-
if(prim[0].uv && prim[1].uv && prim[2].uv){
216-
var tc=texcoords[0];
217-
for(var j=0;j<3;j++){
218-
faces.push(
219-
pushItemAndMaybeReuse2(tc,
220-
roundNum(prim[j].uv[0]),
221-
roundNum(prim[j].uv[1])))
222-
}
223-
flags|=0x08;
224-
}
225-
if(prim[0].normal && prim[1].normal && prim[2].normal){
226-
for(var j=0;j<3;j++){
227-
faces.push(
228-
pushItemAndMaybeReuse3(normals,
229-
roundNum(prim[j].normal[0]),
230-
roundNum(prim[j].normal[1]),
231-
roundNum(prim[j].normal[2])))
232-
}
233-
flags|=0x20;
234-
}
235-
if(prim[0].color && prim[1].color && prim[2].color){
236-
for(var j=0;j<3;j++){
237-
faces.push(
238-
pushItemAndMaybeReuse1(colors,
239-
colorToHex(prim[j].color)))
240-
}
241-
flags|=0x80;
242-
}
243-
faces[idx]=flags;
244-
})
245-
return JSON.stringify(json);
246-
}
247-
248134
function saveString(string,type,filename){
249135
extension=".txt"
250136
type=type||"text/plain"
@@ -273,7 +159,7 @@ function updateShape(func){
273159
a.id="settings-link"
274160
a.innerHTML="Save this model (JSON)"
275161
a.addEventListener("click",function(){
276-
var json=meshToJson(func(allsettings));
162+
var json=MeshJSON.toJSON(func(allsettings));
277163
saveString(json,"application/json","model.json")
278164
});
279165
div.appendChild(a)
@@ -341,3 +227,5 @@ window.addEventListener("load",function(){
341227
}
342228
})
343229
})
230+
231+
document.write("<script src='../extras/meshjson.js'></script>")

0 commit comments

Comments
 (0)