用于锥体和线的交叉的Graphics3D细化

时间:2011-11-23 09:08:27

标签: image wolfram-mathematica

this question的鼓励下,我敢问类似的事情。

我试图用mathematica绘制一个与一条线相交的圆锥体。线的起点位于锥体的侧表面上,其终点位于锥体内部。 只要线的端点远离锥的尖端,一切看起来都很好(在我的例子中使用例如endpointOfLine = 0.007)。但是如果端点接近尖端(在我的例子中,endpointOfLine <0.007),那么线的很大一部分似乎都在锥体的表面上。 当然,对于非常接近锥形尖端的端点值,该线几乎与表面平行,因此可能会出现这种效应。但是如果端点不太靠近锥尖,效果也会出现。

这里的例子是:

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 个答案:

答案 0 :(得分:1)

尝试将端点放置在锥体底部但不在半径上,如:

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

enter image description here

我觉得这不是一个与你所指的问题根本不同的问题。