CSG notation (InstanceTopic, 3)

From Hi.gher. Space

(Difference between revisions)
m
m (ontology)
 
(11 intermediate revisions not shown)
Line 1: Line 1:
 +
<[#ontology [kind topic] [cats Notation]]>
[ System created by [[Keiji]] ]
[ System created by [[Keiji]] ]
'''Constructive Solid Geometry Notation''' is a way to represent any n-dimensional object. You start with a [[point (object)|point]], and perform each operation in order.
'''Constructive Solid Geometry Notation''' is a way to represent any n-dimensional object. You start with a [[point (object)|point]], and perform each operation in order.
 +
 +
Important: CSG notation '''has been obsoleted''' by [[SSC notation]].
== Operations ==
== Operations ==
These operations create the object.
These operations create the object.
-
* E = [[Extrude]]s the object.
+
*E = [[Extrude]]s the object.
-
* H = Does the same as E, but doesn't solidify the object. ''Obsolete, usage of C is preferred''.
+
*H = Does the same as E, but doesn't solidify the object. ''Obsolete, usage of C is preferred''.
-
* L = [[Lathe]]s the object.
+
*L = [[Lathe]]s the object.
-
* Q = Equivalent to M<sub>x</sub>[1]L, which effectively makes the object into a [[torus]].
+
*Q = Equivalent to M<sub>x</sub>[1]L, which effectively makes the object into a [[torus]].
-
* T = [[Taper]]s the object to a point such that the new lines are the same length as the original lines.
+
*T = [[Taper]]s the object to a point such that the new lines are the same length as the original lines.
-
* D = Tapers the object to two opposite points such that the new angles are 90 degrees.
+
*D = Tapers the object to two opposite points such that the new angles are 90 degrees.
-
* C<sub>''d''</sub> = Connects all existing vertices such that the result is a non-[[curved]] non-[[self-intersecting]] ''d''-[[frame]] [[polytope]].
+
*C<sub>''d''</sub> = Gets the [[convex hull]] of the shape in ''d''-space.
-
* X<sub>''d''</sub>[''a'',''v''] = Truncates the ''d''-hypercells by v at angle a. See below for angle notation.
+
*X<sub>''d''</sub>[''v'',''a''] = Truncates the ''d''-hypercells by v ∈ [0,1] default 0.5 at angle a ∈ (-1,1) default 0.
 +
*P[a] = Projects all existing vertices onto a [[hypersphere]] of radius a ∈ (0,∞) default 1 in the dimension of the current [[bounding space]].
<br>
<br>
These operations translate the object. A single operation for a matrix translation is being considered.
These operations translate the object. A single operation for a matrix translation is being considered.
-
* M<sub>''d''</sub>[''v''] = [[Translate]]s the object by ''v'' in dimension ''d''.
+
*M<sub>''d''</sub>[''v''] = [[Translate]]s the object by ''v'' in dimension ''d''.
-
* R<sub>''p''</sub>[''a''] = [[Rotate]]s the object by ''a'' in plane ''p''.
+
*R<sub>''p''</sub>[''a''] = [[Rotate]]s the object by ''a'' in plane ''p''.
-
* S<sub>''d''</sub>[''v''] = [[Stretch]]es the object by scale factor ''v'' in dimension ''d''.
+
*S<sub>''d''</sub>[''v''] = [[Stretch]]es the object by scale factor ''v'' in dimension ''d''.
<br>
<br>
These operations deal with groups of operations, and will separate groups if they are not explicitly defined with parentheses.
These operations deal with groups of operations, and will separate groups if they are not explicitly defined with parentheses.
* * = Gets the [[cartesian product]] of the two groups.
* * = Gets the [[cartesian product]] of the two groups.
* # = [[Spherate]]s the two groups.
* # = [[Spherate]]s the two groups.
-
* & = [[Intersect]]s the two groups.
+
*& = [[Intersect]]s the two groups.
-
* + = [[Merge]]s the two groups.
+
*+ = [[Merge]]s the two groups.
-
* - = [[Subtract]]s the group on the right from the group on the left.
+
*- = [[Subtract]]s the group on the right from the group on the left.
-
* ( ) = Makes the contained groups into one group, so that subsequent operations apply to the whole contents.
+
*( ) = Makes the contained groups into one group, so that subsequent operations apply to the whole contents.
== Angle notation ==
== Angle notation ==
Line 36: Line 40:
**Anything that isn't a literal will be treated as a number of radians, e.g. 2π or tan<sup>-1</sup>(2<sup>-1</sup>).
**Anything that isn't a literal will be treated as a number of radians, e.g. 2π or tan<sup>-1</sup>(2<sup>-1</sup>).
*Zero degrees or radians means that the angle is half-way between one affected hypercell and another.
*Zero degrees or radians means that the angle is half-way between one affected hypercell and another.
-
*They are ordered in the same order that dimensions are created using E, L, T and D operations. Normal order is xyzw, followed by unnamed dimensions, but to explicitly specify you can place a series of lowercase letters at the start of the string e.g. wxyzLLL.
+
*They are ordered in the same order that dimensions are created using E, L, T and D operations. Normal order is xyzwφσ, followed by unnamed dimensions, but to explicitly specify you can place a series of lowercase letters at the start of the string e.g. wxyzLLL.
== Plane notation ==
== Plane notation ==
Line 56: Line 60:
*EEEX<sub>1</sub>[<0>,(2+sqrt(2))<sup>-1</sup>] - gives the [[rhombicuboctahedron]].
*EEEX<sub>1</sub>[<0>,(2+sqrt(2))<sup>-1</sup>] - gives the [[rhombicuboctahedron]].
*EEEX<sub>0</sub>[<0, 0>,(2+sqrt(2))<sup>-1</sup>] - gives the [[truncated cube]].
*EEEX<sub>0</sub>[<0, 0>,(2+sqrt(2))<sup>-1</sup>] - gives the [[truncated cube]].
-
 
-
[[Category:Geometry]]
 

Latest revision as of 21:11, 8 February 2014

[ System created by Keiji ]

Constructive Solid Geometry Notation is a way to represent any n-dimensional object. You start with a point, and perform each operation in order.

Important: CSG notation has been obsoleted by SSC notation.

Operations

These operations create the object.

  • E = Extrudes the object.
  • H = Does the same as E, but doesn't solidify the object. Obsolete, usage of C is preferred.
  • L = Lathes the object.
  • Q = Equivalent to Mx[1]L, which effectively makes the object into a torus.
  • T = Tapers the object to a point such that the new lines are the same length as the original lines.
  • D = Tapers the object to two opposite points such that the new angles are 90 degrees.
  • Cd = Gets the convex hull of the shape in d-space.
  • Xd[v,a] = Truncates the d-hypercells by v ∈ [0,1] default 0.5 at angle a ∈ (-1,1) default 0.
  • P[a] = Projects all existing vertices onto a hypersphere of radius a ∈ (0,∞) default 1 in the dimension of the current bounding space.


These operations translate the object. A single operation for a matrix translation is being considered.

  • Md[v] = Translates the object by v in dimension d.
  • Rp[a] = Rotates the object by a in plane p.
  • Sd[v] = Stretches the object by scale factor v in dimension d.


These operations deal with groups of operations, and will separate groups if they are not explicitly defined with parentheses.

  • * = Gets the cartesian product of the two groups.
  • # = Spherates the two groups.
  • & = Intersects the two groups.
  • + = Merges the two groups.
  • - = Subtracts the group on the right from the group on the left.
  • ( ) = Makes the contained groups into one group, so that subsequent operations apply to the whole contents.

Angle notation

For use with the X operation.

  • Angles are written within angle brackets < > and are separated with commas.
  • Angles may be written in four different forms:
    • a b where a/b is the fraction of degrees out of 360, for example 90° = 1 4.
    • v where v is the pairing of a and b above.
    • x° where x is the number of degrees.
    • Anything that isn't a literal will be treated as a number of radians, e.g. 2π or tan-1(2-1).
  • Zero degrees or radians means that the angle is half-way between one affected hypercell and another.
  • They are ordered in the same order that dimensions are created using E, L, T and D operations. Normal order is xyzwφσ, followed by unnamed dimensions, but to explicitly specify you can place a series of lowercase letters at the start of the string e.g. wxyzLLL.

Plane notation

For use with the R operation.

  • Planes can be specified in two forms:
    • Provide two letters, eg. xw. This is shorter, but only gives cardinal planes.
    • Provide three points, eg. <0,0,0>,<1,0,0>,<0,0,1>. As long as the three points are not in the same line, this will give a plane that can be in any orientation.
  • Note that in the R notation, the rotation happens around the hyperaxis that is perpendicular to the plane specified.

Examples

Examples of the C operation:

  • EDDC0 produces a nullframe octahedron. This is the same as xH+yH+zH.
  • EDDC1 produces a monoframe octahedron. This is the same as xyHD+xzHD+yzHD.
  • EDDC2 produces a diframe octahedron. This is the same as HDD.
  • EDDC3 produces a triframe octahedron. This is the same as EDD.

Examples of the X operation:

  • EEEX1[<0>,2-1] - gives the octahedron. This is the same as EDD.
  • EEEX1[<0>,(2+sqrt(2))-1] - gives the rhombicuboctahedron.
  • EEEX0[<0, 0>,(2+sqrt(2))-1] - gives the truncated cube.