Wątek zablokowany 2017-10-30 23:54 przez furious programming.

rysowanie knotów w 3d

0

https://en.wikipedia.org/wiki/Trefoil_knot

No i jak narysować takie coś?

Ogólnie chodzi mi o rysowanie rury wzdłuż dowolnej - zadanej krzywej: r = r(s,t) = (x(s,t), ...);

1

Takie coś wystarczy?

https://stemkoski.github.io/Three.js/

pod Shapes jest słowo klucz "torus knots"

0
Spine napisał(a):

Takie coś wystarczy?

https://stemkoski.github.io/Three.js/

pod Shapes jest słowo klucz "torus knots"

Nie widzę tam koniecznych wzorów, o które mi chodzi.

Przykładowo:
ta rura dla okręgu to torus, czyli tu masz krzywą typu okrąg:
x = cos(t), y = sin(t), z = 0

i to jest cienka linia zaledwie, ale ja chcę grubą rurę, czyli torus, który jest tak opisany:
x,y,z = (R+r*cos(s))cos(t), (R+rcos(s))sin(t), rsin(s);

gdzie: R = 1 w tym przypadku (promień okręgu);
a pod r możemy wsadzić np.: r = 0.2 jako promień tej rury, która biegnie wzdłuż okręgu.

0

A właściwie to jest ta postać o którą ci chodzi, tylko zamiast s i t jest u i v. - jarekczek dziś, 20:38

Pewnie że to jest ten sam wzór na torusa, czyli na rurę wzdłuż okręgu.

Tylko że mi chodzi o generalny wzór, czy na dowolną rurę, która biegnie wzdłuż zadanej krzywej:
x(t), y(t), z(t) -> rura o promieniu r > 0;

w szczególności dla r=0 otrzymamy z powrotem tą krzywą, co łatwo sobie uzmysłowić: krzywa to rura, ale o grubości zerowej.

0

Konkretnie:
mamy ten knot, czyli krzywą: r(t) = sint+2sin2t, cost-2cos2t, -sin3t

no i jakie jest teraz równanie poszukiwanej rury dla tej krzywej?

r(s,t) = ?

0

To jest problem matematyczny. Trzeba wyliczyć pochodną, prostopadłą i okrąg. Na pewno ktoś już to zrobił, ale wzór będzie skomplikowany.

Jeżeli nie ma gotowca, to możesz dorobić w javascripcie algorytm i podpiąć się do tego Three.js.

  1. wyliczenie prostej k z 2 ostatnich punktów (P,Q) krzywej r(s, t)
  2. wyliczenie prostej m prostopadłej do k pod kątem u od jakiejś bazy
  3. wyliczenie punktu S w odległości r od punktu Q wzdłuż prostej m
    Punkt S jest punktem powierzchni rury.

To już jest prosta geometria 3d.

0
jarekczek napisał(a):

To jest problem matematyczny. Trzeba wyliczyć pochodną, prostopadłą i okrąg. Na pewno ktoś już to zrobił, ale wzór będzie skomplikowany.

Na pewno to ktoś był już na Marsie, w związku tym nie ma już po co tam lecieć. :)

Jeżeli nie ma gotowca, to możesz dorobić w javascripcie algorytm i podpiąć się do tego Three.js.

  1. wyliczenie prostej k z 2 ostatnich punktów (P,Q) krzywej r(s, t)
  2. wyliczenie prostej m prostopadłej do k pod kątem u od jakiejś bazy
  3. wyliczenie punktu S w odległości r od punktu Q wzdłuż prostej m
    Punkt S jest punktem powierzchni rury.

To już jest prosta geometria 3d.

Skoro to tylko taka 'prosta geometria 3d' no to podaj tej wzór.

0

title

Równania tej rury:
x = sin(t)+2sin(2t)+((sin(t)-4sin(2t))cos(s)+3cos(3t)(cos(t)+4cos(2t))sin(s)/sqrt(9cos(3t)^2+8cos(3t)+17))*0.2/sqrt(8cos(3t)+17)
y = cos(t)-2cos(2t)+((cos(t)+4cos(2t))cos(s)-3cos(3t)(sin(t)-4sin(2t))sin(s)/sqrt(9cos(3t)^2+8cos(3t)+17))*0.2/sqrt(8cos(3t)+17)
z = -sin(3t) + (17 + 8cos(3t))sin(s)*0.2/sqrt((8cos(3t)+17)(9cos(3t)^2+8cos(3t)+17))

1 użytkowników online, w tym zalogowanych: 0, gości: 1