1 / 1
Implicit Solid Model — zdjęcie 1

Implicit Solid Model

Zamów wydruk tego modelu

Obliczymy ostateczną cenę na podstawie wybranego pliku. Sprawdzisz ją i zaakceptujesz przed płatnością.

Zapisane na tym urządzeniu.

Implicit Solid Model - Originally posted to Thingiverse 2014-Feb-02

Ocena
5 / 5
Polubienia
1
Pobrania
2
Wydruki
1
Wyświetlenia
22
Oceny
1

Aktualizacja u źródła:

Informacje o modelu

Źródło
Printables
Kategoria
Sculptures
Licencja
Creative Commons — Attribution — Share Alike

Modeled implicitly (the shape is completely described with an equation) via Mathematica using basic geometries and Boolean Operations.  College assignment for University of Washington's ME480 CAD 3DP class on advanced use of 3D modeling and 3D printing.

The bulk of model is created by a Boolean Addition of a Mobius Strip to a Sphere.

The model code used in Mathematica

Base code courtesy of Professor Mark Ganter

(Boolean Join)
join[f, g] := Min[f, g]
(Boolean Cut)
cut[f, g] := Max[f, -g]

(Translations)
transX [f, s] := f /. x -> (x - s)
transY [f, s] := f /. y -> (y - s)
transZ[f, s] := f /. z -> (z - s)

(Rotate)
rotateRZ[f, a] := f /. {x -> xCos[a] + ySin[a], y -> -xSin[a] + yCos[a]}
rotateZ[f, a] := rotateRZ[f, d2R[a]]

(Declaring a Primitive Geometry: Sphere)
sphere[rad_] := x^2 + y^2 + z^2 - rad^2

(Declaring a Primitive Geometry: Mobius strip - http://www.wolframalpha.com/input/?i=mobius+strip+Cartesian+equation)
mobius[a_] := -a^2 y - 2 a x z + x^2 y - 2 x^2 z + y^3 - 2 y^2 z +
y z^2

(Creating a geometry: muckabout3)
muckabout3 = cut[sphere[2.75], mobius[3]]

(Creating a geometry: trasn2rotatma3)
rotatemuckabout3 = rotateZ[muckabout3, 180]
transrotatema3 = transY[rotatemuckabout3, -0.5]
trans2rotatema3 = transX[transrotatema3, 0.5]

(Creating a geometry: trans2rotatma13)
transrotatema13 = transY[muckabout3, 0.5]
trans2rotatema13 = transX[transrotatema13, -0.5]

(Joining two geometries together)
joinedmuckabout3 = join[trans2rotatema13, trans2rotatema3]

(Creating a geometry: transrttma32)
muckabout32 = cut[sphere[6], mobius[3]]
rotatemuckabout32 = rotateZ[muckabout32, 180]
transrotatema32 = transX[rotatemuckabout32, 3]
transrtransma32 = transY[transrotatema32, 1]
transrttma32 = transZ[transrtransma32, -2.75]

(Joining two geometries together)
joinmuck3s = join[joinedmuckabout3, transrttma32]

(plot the model for a preview)
plt = ContourPlot3D[joinmuck3s == 0, {x, -10, 10}, {y, -10, 10}, {z, -10, 10}

(export your model as an STL file)
Export["ISMmodel1.stl", plt, "STL"]

The Resulting ISM Equation

Max[-7.5625 + x^2 + y^2 + z^2, 9 y - x^2 y - y^3 + 6 x z + 2 x^2 z + 2 y^2 z - y z^2]
Max[-7.5625 + x^2 + y^2 + z^2, -9 y + x^2 y + y^3 - 6 x z + 2 x^2 z + 2 y^2 z + y z^2]
Max[-7.5625 + x^2 + (0.5 + y)^2 + z^2, -9 (0.5 + y) + x^2 (0.5 + y) + (0.5 + y)^3 - 6 x z + 2 x^2 z + 2 (0.5 + y)^2 z + (0.5 + y) z^2]
Max[-7.5625 + (-0.5 + x)^2 + (0.5 + y)^2 + z^2, -9 (0.5 + y) + (-0.5 + x)^2 (0.5 + y) + (0.5 + y)^3 - 6 (-0.5 + x) z + 2 (-0.5 + x)^2 z + 2 (0.5 + y)^2 z + (0.5 + y) z^2]
Max[-7.5625 + x^2 + (-0.5 + y)^2 + z^2, 9 (-0.5 + y) - x^2 (-0.5 + y) - (-0.5 + y)^3 + 6 x z + 2 x^2 z + 2 (-0.5 + y)^2 z - (-0.5 + y) z^2]
Max[-7.5625 + (0.5 + x)^2 + (-0.5 + y)^2 + z^2, 9 (-0.5 + y) - (0.5 + x)^2 (-0.5 + y) - (-0.5 + y)^3 + 6 (0.5 + x) z + 2 (0.5 + x)^2 z + 2 (-0.5 + y)^2 z - (-0.5 + y) z^2]
Min[Max[-7.5625 + (0.5 + x)^2 + (-0.5 + y)^2 + z^2, 9 (-0.5 + y) - (0.5 + x)^2 (-0.5 + y) - (-0.5 + y)^3 + 6 (0.5 + x) z + 2 (0.5 + x)^2 z + 2 (-0.5 + y)^2 z - (-0.5 + y) z^2], Max[-7.5625 + (-0.5 + x)^2 + (0.5 + y)^2 + z^2, -9 (0.5 + y) + (-0.5 + x)^2 (0.5 + y) + (0.5 + y)^3 - 6 (-0.5 + x) z + 2 (-0.5 + x)^2 z + 2 (0.5 + y)^2 z + (0.5 + y) z^2]]
Max[-36 + x^2 + y^2 + z^2, 9 y - x^2 y - y^3 + 6 x z + 2 x^2 z + 2 y^2 z - y z^2]
Max[-36 + x^2 + y^2 + z^2, -9 y + x^2 y + y^3 - 6 x z + 2 x^2 z + 2 y^2 z + y z^2]
Max[-36 + (-3 + x)^2 + y^2 + z^2, -9 y + (-3 + x)^2 y + y^3 - 6 (-3 + x) z + 2 (-3 + x)^2 z + 2 y^2 z + y z^2]
Max[-36 + (-3 + x)^2 + (-1 + y)^2 + z^2, -9 (-1 + y) + (-3 + x)^2 (-1 + y) + (-1 + y)^3 - 6 (-3 + x) z + 2 (-3 + x)^2 z + 2 (-1 + y)^2 z + (-1 + y) z^2]
Max[-36 + (-3 + x)^2 + (-1 + y)^2 + (2.75 + z)^2, -9 (-1 + y) + (-3 + x)^2 (-1 + y) + (-1 + y)^3 - 6 (-3 + x) (2.75 + z) + 2 (-3 + x)^2 (2.75 + z) + 2 (-1 + y)^2 (2.75 + z) + (-1 + y) (2.75 + z)^2]
Min[Max[-7.5625 + (0.5 + x)^2 + (-0.5 + y)^2 + z^2, 9 (-0.5 + y) - (0.5 + x)^2 (-0.5 + y) - (-0.5 + y)^3 + 6 (0.5 + x) z + 2 (0.5 + x)^2 z + 2 (-0.5 + y)^2 z - (-0.5 + y) z^2], Max[-7.5625 + (-0.5 + x)^2 + (0.5 + y)^2 + z^2, -9 (0.5 + y) + (-0.5 + x)^2 (0.5 + y) + (0.5 + y)^3 - 6 (-0.5 + x) z + 2 (-0.5 + x)^2 z + 2 (0.5 + y)^2 z + (0.5 + y) z^2], Max[-36 + (-3 + x)^2 + (-1 + y)^2 + (2.75 + z)^2, -9 (-1 + y) + (-3 + x)^2 (-1 + y) + (-1 + y)^3 - 6 (-3 + x) (2.75 + z) + 2 (-3 + x)^2 (2.75 + z) + 2 (-1 + y)^2 (2.75 + z) + (-1 + y) (2.75 + z)^2]]