Гнуплот пересечение нормальных шаров - PullRequest
0 голосов
/ 15 декабря 2018

Я хочу построить пересечение x^2 + y^2 + z^2 <= 1 и abs(x) + abs(y) + abs(z) <= 2

, которое должно быть

-1<=x<=1, -sqrt(1 - x^2)<y<sqrt(1 - x^2), -sqrt(-x^2 - y^2 + 1 <=z<=sqrt(-x^2 - y^2 + 1)

Есть ли способ построить это с помощью gnuplot?

1 Ответ

0 голосов
/ 17 декабря 2018

мой комментарий слишком длинный для комментария ... Вы можете строить поверхности в gnuplot, но я не знаю, как вы можете как-то изобразить / визуализировать их непосредственно в математической форме, которую вы дали выше (мне также было бы интересноесли можно.) И я не знаю, что вы можете пересекать твердые тела и получать пересечения, исключения и т. д., как вы получаете в системе САПР.

Кроме того, однако, если я нанесу на карту ваши тела,пересечение сферы (уравнение 1) и октаэдра (уравнение 2) будет самой сферой, поскольку она полностью находится внутри октаэдра (см. изображение слева и в центре).Например, если вы масштабируете свой октаэдр на 0,75 (изображение справа), вы получите пересечение, которое отличается от исходной сферы.

Это иллюстрация, но все же не решение для того, что вы ищете.

Некоторые коды для иллюстрации:

### start code
reset session
set parametric
set view equal xyz

$Octahedron <<EOD
0 0 2
2 0 0
0 2 0
0 0 2

0 0 2
0 2 0
-2 0 0
0 0 2

0 0 2
-2 0 0
0 -2 0
0 0 2

0 0 2
0 -2 0
2 0 0
0 0 2

0 0 -2
2 0 0
0 2 0
0 0 2

0 0 -2
0 2 0
-2 0 0
0 0 2

0 0 -2
-2 0 0
0 -2 0
0 0 2

0 0 -2
0 -2 0
2 0 0
0 0 2
EOD

set xrange [-2:2]
set xtics 1
set yrange [-2:2]
set ytics 1
set zrange [-2:2]
set ztics 1
set urange [-pi/2:pi/2]
set vrange [0:2*pi]
set isosamples 19,13

set multiplot layout 1,3
splot $Octahedron u 1:2:3 w l not, \
    cos(u)*cos(v),cos(u)*sin(v),sin(u) not

set hidden
replot

splot $Octahedron u ($1*0.75):($2*0.75):($3*0.75) w l not, \
    cos(u)*cos(v),cos(u)*sin(v),sin(u) not

unset multiplot
### end of code

Иллюстрация:

enter image description here

...