removed useless _ folders
This commit is contained in:
3
Geodesic_Dome_Builder/Geodesic_Dome_Builder.sol
Normal file
3
Geodesic_Dome_Builder/Geodesic_Dome_Builder.sol
Normal file
@@ -0,0 +1,3 @@
|
||||
<Solution name="Geodesic_Dome_Builder">
|
||||
<Project name="Geodesic_Dome_Builder" path="Geodesic_Dome_Builder\Geodesic_Dome_Builder.prj" active="true"/>
|
||||
</Solution>
|
||||
@@ -0,0 +1,10 @@
|
||||
<Project name="Geodesic_Dome_Builder" guid="D7E9560C-6C00-1014-B904-200204C60A89">
|
||||
<Object name="Object" guid="D7E95702-6C00-1014-B904-200204C60A89">
|
||||
<Script name="Geodesic_Dome_Builder_1.lsl" guid="D7E990B1-6C00-1014-B904-200204C60A89">
|
||||
</Script>
|
||||
<Script name="Geodesic_Dome_Builder_2.lsl" guid="D7E9AAE6-6C00-1014-B904-200204C60A89">
|
||||
</Script>
|
||||
<Script name="Geodesic_Dome_Builder_3.lsl" guid="D7E9C14C-6C00-1014-B904-200204C60A89">
|
||||
</Script>
|
||||
</Object>
|
||||
</Project>
|
||||
@@ -0,0 +1,199 @@
|
||||
// :CATEGORY:Building
|
||||
// :NAME:Geodesic_Dome_Builder
|
||||
// :AUTHOR:Shine Renoir
|
||||
// :CREATED:2010-01-10 05:20:56.000
|
||||
// :EDITED:2013-09-18 15:38:54
|
||||
// :ID:345
|
||||
// :NUM:465
|
||||
// :REV:1.0
|
||||
// :WORLD:Second Life
|
||||
// :DESCRIPTION:
|
||||
// This code makes Geodesic Domes and was given to the Open Source Scripting group by Shine Renoir.
|
||||
<img src="http://www.sparticarroll.com/public/Upload/dome.jpg">
|
||||
//
|
||||
You can read about the math here, http://www.geometer.org/mathcircles/geodesic.pdf
|
||||
//
|
||||
// The Dome Builder uses 3 scripts. One in the builder object and two simple scale/scale and shear scripts in the component parts.
|
||||
//
|
||||
// You can pick up a complete Dome Builder tool for free in Chessport, near the telehub.
|
||||
//
|
||||
// First - this script goes in the builder object.
|
||||
//
|
||||
// BUILDER
|
||||
// :CODE:
|
||||
|
||||
|
||||
// Dome Builder
|
||||
|
||||
// 2007 Copyright by Shine Renoir (fb@frank-buss.de)
|
||||
|
||||
// Use it for whatever you want, but keep this copyright notice
|
||||
|
||||
// and credit my name in notecards etc., if you use it in
|
||||
|
||||
// closed source objects
|
||||
|
||||
|
||||
|
||||
integer subdivision = 2;
|
||||
|
||||
float length = 3.0;
|
||||
|
||||
|
||||
|
||||
vector base;
|
||||
|
||||
float r;
|
||||
|
||||
|
||||
|
||||
move(vector destination)
|
||||
|
||||
{
|
||||
|
||||
// llSetPos is limited to 10m distances,
|
||||
|
||||
// so it is called until the target is reached
|
||||
|
||||
vector p = ZERO_VECTOR;
|
||||
|
||||
while (p.z != destination.z) {
|
||||
|
||||
llSetPos(destination);
|
||||
|
||||
p = llGetPos();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
drawLine(vector v1, vector v2)
|
||||
|
||||
{
|
||||
|
||||
vector line = v2 - v1;
|
||||
|
||||
vector pos = base + line / 2 + v1;
|
||||
|
||||
float len = llVecMag(line);
|
||||
|
||||
vector size = <0.1, 0.1, len>;
|
||||
|
||||
vector up = <0, 0, 1>;
|
||||
|
||||
rotation rot = llRotBetween(up, llVecNorm(line));
|
||||
|
||||
move(pos);
|
||||
|
||||
llRezObject("Line", pos, ZERO_VECTOR, rot, 0);
|
||||
|
||||
llSay(-42, (string) size);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
drawTriangle(vector v1, vector v2, vector v3)
|
||||
|
||||
{
|
||||
|
||||
// assuming a normal triangle: no zero area
|
||||
|
||||
|
||||
|
||||
// make v1-v3 the longest side
|
||||
|
||||
integer i = 0;
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
|
||||
float a = llVecDist(v2, v3);
|
||||
|
||||
float b = llVecDist(v1, v3);
|
||||
|
||||
float c = llVecDist(v1, v2);
|
||||
|
||||
if (a > b || c > b) {
|
||||
|
||||
vector tmp = v1;
|
||||
|
||||
v1 = v2;
|
||||
|
||||
v2 = v3;
|
||||
|
||||
v3 = tmp;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// calculate side lengths
|
||||
|
||||
float a = llVecDist(v2, v3);
|
||||
|
||||
float b = llVecDist(v1, v3);
|
||||
|
||||
float c = llVecDist(v1, v2);
|
||||
|
||||
|
||||
|
||||
// b=b1+b2, a^2=h^2+b2^2, c^2=b1^2+h^2, solving:
|
||||
|
||||
float b2 = (a*a + b*b - c*c)/2.0/b;
|
||||
|
||||
float b1 = b - b2;
|
||||
|
||||
float h = llSqrt(a*a - b2*b2); // triangle height
|
||||
|
||||
|
||||
|
||||
// calculate triangle height vector and shear value
|
||||
|
||||
float hPosition = b1 / b;
|
||||
|
||||
vector vb1 = (v3 - v1) * hPosition;
|
||||
|
||||
vector vh = v2 - (v1 + vb1);
|
||||
|
||||
float shear = hPosition - 0.5;
|
||||
|
||||
|
||||
|
||||
// calculate position and rotation
|
||||
|
||||
vector pos = base + v1 + (v3 - v1) / 2 + vh / 2;
|
||||
|
||||
vector size = <b, 0.05, h>;
|
||||
|
||||
vector up = <0.0, 0.0, 1.0>;
|
||||
|
||||
rotation rot = llRotBetween(up, llVecNorm(vh));
|
||||
|
||||
vector fwd = llVecNorm(v3 - v1); // fwd is the base
|
||||
|
||||
vector left = llVecNorm(vh);
|
||||
|
||||
left = llVecNorm(left % fwd); // "left" is cross product (orthogonal to base and left)
|
||||
|
||||
rot = llAxes2Rot(fwd, left, fwd % left); // calculate the needed rotation
|
||||
|
||||
|
||||
|
||||
// create object
|
||||
|
||||
llRezObject("Triangle", pos, ZERO_VECTOR, rot, 0);
|
||||
|
||||
|
||||
|
||||
// set size and shear value
|
||||
|
||||
list send = [size, shear ] ;
|
||||
|
||||
llSay(-42, llList2CSV(send));
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
// :CATEGORY:Building
|
||||
// :NAME:Geodesic_Dome_Builder
|
||||
// :AUTHOR:Shine Renoir
|
||||
// :CREATED:2010-01-10 05:20:56.000
|
||||
// :EDITED:2013-09-18 15:38:54
|
||||
// :ID:345
|
||||
// :NUM:466
|
||||
// :REV:1.0
|
||||
// :WORLD:Second Life
|
||||
// :DESCRIPTION:
|
||||
// LINE
|
||||
//
|
||||
//
|
||||
// Put this scale script into a rod object called 'Line' and put that inside the builder, alongside the script above.
|
||||
//
|
||||
// The rod object is a Cylinder with size <0.1,0.1,1.0>.
|
||||
// :CODE:
|
||||
|
||||
|
||||
|
||||
|
||||
// One time scale script
|
||||
|
||||
// 2007 Copyright by Shine Renoir (fb@frank-buss.de)
|
||||
|
||||
// Use it for whatever you want, but keep this copyright notice
|
||||
|
||||
// and credit my name in notecards etc., if you use it in
|
||||
|
||||
// closed source objects
|
||||
|
||||
|
||||
|
||||
integer handle;
|
||||
|
||||
|
||||
|
||||
default
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
// :CATEGORY:Building
|
||||
// :NAME:Geodesic_Dome_Builder
|
||||
// :AUTHOR:Shine Renoir
|
||||
// :CREATED:2010-01-10 05:20:56.000
|
||||
// :EDITED:2013-09-18 15:38:54
|
||||
// :ID:345
|
||||
// :NUM:467
|
||||
// :REV:1.0
|
||||
// :WORLD:Second Life
|
||||
// :DESCRIPTION:
|
||||
// TRIANGLE
|
||||
// :CODE:
|
||||
|
||||
|
||||
// One time scale and shear script
|
||||
|
||||
// 2007 Copyright by Shine Renoir (fb@frank-buss.de)
|
||||
|
||||
// Use it for whatever you want, but keep this copyright notice
|
||||
|
||||
// and credit my name in notecards etc., if you use it in
|
||||
|
||||
// closed source objects
|
||||
|
||||
|
||||
|
||||
integer handle;
|
||||
|
||||
|
||||
|
||||
default
|
||||
|
||||
{
|
||||
|
||||
state_entry()
|
||||
|
||||
{
|
||||
|
||||
handle = llListen(-42, "", NULL_KEY, "" );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
listen(integer channel, string name, key id, string message)
|
||||
|
||||
{
|
||||
|
||||
list tokens = llCSV2List(message);
|
||||
|
||||
vector size = (vector) llList2String(tokens, 0);
|
||||
|
||||
Reference in New Issue
Block a user