Graphics3D уточнение для пересечения конуса и линии - PullRequest
2 голосов
/ 23 ноября 2011

Воодушевленный этим вопросом , смею задать что-то подобное.

Я пытаюсь нанести с помощью mathematica конус, который пересекается линией. Начальная точка линии находится на боковой поверхности конуса и его конечной точке внутри конуса. Пока конечная точка линии находится далеко от вершины конуса, все выглядит довольно хорошо (используйте, например, endpointOfLine = 0.007 в моем примере). Но если конечная точка приближается к вершине (endpointOfLine <0,007 в моем примере), кажется, что большая часть линии будет на поверхности конуса. Конечно, для значений конечных точек, которые очень близки к конусу конуса, линия почти параллельна поверхности, поэтому этот эффект, вероятно, должен появиться. Но эффект появляется и в том случае, если конечная точка не так близка к кончику конуса. </p>

Вот пример:

totalLength = 10^-2;(*length of the cone*)
theta = 17*10^-3;(*half opening angle of the cone*)
radius[theta_, l_] := Tan[theta]*l;(*radius of the cone as function of its length*)
endpointOfLine = 0.0015;(*endpoint of the test line, to be varied*)

testLine = Line[{{radius[theta, totalLength], 0, totalLength},{0, 0, endpointOfLine}}, 
                VertexColors -> {Orange, Orange}
           ];
Graphics3D[
  {
     {
       RevolutionPlot3D[{radius[theta, l], 0, l}, {l, 0, totalLength}, 
             Mesh -> None, 
             PlotStyle -> Directive[Opacity[0.5], Gray], 
             PlotPoints -> 60][[1]]
     }, 
     {testLine}
  }, 
  Boxed -> True,BoxRatios -> {1, 1, 3}, 
  Lighting -> None(*ugly, but makes the problem well visible*)
]

ConeAndLine

Есть ли способ уменьшить этот эффект? Увеличение PlotPoints до 60 немного уменьшило эффект, но я был бы рад, если бы мог уменьшить его больше. Есть идеи?

1 Ответ

1 голос
/ 23 ноября 2011

Постарайтесь расположить конечную точку у основания конуса близко, но не по радиусу, как:

testLine = 
  Line[{{0.97 radius[theta, totalLength], 0, totalLength}, {0, 0, endpointOfLine}}, 
      VertexColors -> {Orange, Orange}
  ];

enter image description here

Я чувствую, что это принципиально не проблематот, который вы имели в виду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...