2011-11-23 33 views
12

Cố gắng tạo ra một đồ họa ba chiều đẹp của hình nón giao nhau bằng một mặt phẳng tôi chọn một sự sắp xếp lại một cách tiếp cận nhỏ trong Mathematica (ví dụ: sách của S.Mangano và S.Wagon). Đoạn mã bên dưới được giả định để hiển thị cái gọi là xây dựng Dandelin: các quả cầu bên trong và bên ngoài tiếp xúc bên trong với một hình nón và cũng tới một mặt phẳng giao nhau với hình nón. Các điểm tiếp tuyến của các hình cầu đối với mặt phẳng cùng lúc là các hạch của hình elip.Tinh chỉnh hình ảnh hình nón

Block[{r1, r2, m, h1, h2, C1, C2, M, MC1, MC2, T1, T2, cone, slope, plane}, 
    {r1, r2} = {1.4, 3.4}; 
    m = Tan[70.*Degree]; 
    h1 := r1*Sqrt[1 + m^2]; 
    h2 := r2*Sqrt[1 + m^2]; 
    C1 := {0, 0, h1}; 
    C2 := {0, 0, h2}; 
    M = {0, MC1 + h1}; 
    MC2 = MC1*(r2/r1); 
    MC1 = (r1*(h2 - h1))/(r1 + r2); 
    T1 = C1 + r1*{-Sqrt[1 - r1^2/MC1^2], 0, r1/MC1}; 
    T2 = C2 + r2*{Sqrt[1 - r2^2/MC2^2], 0, -(r2/MC2)}; 

    cone[m_, h_] := RevolutionPlot3D[{t, m*t}, {t, 0, h/m}, Mesh -> False][[1]]; 
    slope = (T2[[3]] - T1[[3]])/(T2[[1]] - T1[[1]]); 
    plane = ParametricPlot3D[{t, u, slope*t + M[[2]]}, {t, -2*m, 12/m}, {u, -3, 3}, 
           Boxed -> False, Axes -> False][[1]]; 
    Graphics3D[{{Gray, Opacity[0.39], cone[m, 1.2*(h2 + r2)]}, 
       {Opacity[0.5], Sphere[C1, r1], Sphere[C2, r2]}, 
       {LightBlue, Opacity[0.6], plane}, 
       PointSize[0.0175], Point[T1], Point[T2]}, 
       Boxed -> False, Lighting -> "Neutral", 
       ViewPoint -> {-1.8, -2.5, 1.5}, ImageSize -> 950]] 

Đây là đồ họa: Dandelin construction

Vấn đề là với các đốm trắng xung quanh các lĩnh vực cả hai gần điểm tiếp tuyến. Đưa mã ở trên để Manipulate[...GrayLevel[z]...{z,0,1} ] chúng ta có thể easliy "loại bỏ" những điểm như z có xu hướng 1.

  1. bất cứ ai có thể nhìn thấy một cách tiếp cận khác nhau để loại bỏ các đốm trắng? Tôi thích GrayLevel[z] với z < 0.5.

  2. Tôi đã bị hấp dẫn với một mô hình hơi khác so với các điểm trên các hình cầu thấp hơn và trên trên đồ họa. Bạn có ý tưởng nào về cách giải thích này không?

+0

+1 cho đồ họa đẹp (ngay cả khi nó có "đốm trắng")! Một số toán học cũ trên các phần conic thực sự là đẹp, bao gồm cả việc xây dựng Dandelin trong câu hỏi của bạn. – Simon

Trả lời

5

Tại sao không ai đề nghị chỉ sử dụng được xây dựng trong Cone[] nguyên thủy?

cone[m_, h_] := {EdgeForm[], Cone[{{0, 0, h}, {0, 0, 0}}, h/m]}; 

Điều này làm việc tốt ở đây (không có đốm trắng). Ngoài ra, nó không phải là một hack hoặc workaround. Mục đích của ô trống EdgeForm[] là xóa viền đen của hình nón.

enter image description here

Tôi chỉ nhận ra rằng Cone[] có một nền tảng vững chắc, cũng rất có thể nhìn thấy trên hình ảnh bao gồm. Vì vậy, đây không phải là chính xác giống như phiên bản RevolutionPlot gốc.

6

Bạn có thể muốn làm cho các lĩnh vực một chút nhỏ nhỏ:

Sphere[C1, .98 r1], Sphere[C2, .98 r2] 

Đó là một hack, nhưng nó tránh được vấn đề giao lộ.

Ngoài ra, bạn có thể lên các PlotPoints trên nón:

PlotPoints -> 100 

nhưng điều đó sẽ làm cho render chậm hơn.

Chỉnh sửa: Hoặc kết hợp các yếu tố này để trợ giúp về tốc độ và chất lượng.

+1

'PlotPoints -> 60' là đủ trên máy tính của tôi và chỉ tăng gấp đôi lượng thời gian hiển thị. –

+0

@Arnoud, Cảm ơn! Đặt 'Sphere [C1, .985 r1], Sphere [C2,.985 r2] 'và' PlotPoints -> 100' vẫn còn hầu như không nhìn thấy điểm trắng, nhưng với 'Sphere [C1, .98 r1], Sphere [C2, .98 r2]' Tôi không cần thêm các tùy chọn 'PlotPoints'. – Artes

9

Bạn có thể xây dựng hình nón sử dụng một Tube với bán kính khác nhau:

cone[m_, h_] := {CapForm[None], Tube[{{0, 0, 0}, {0, 0, h}}, {0, h/m}]}; 
+2

Thú vị ... –

+0

Có ai đó vui lòng giải thích cách thức hoạt động này không? Giao lộ dường như không dựa trên các đa giác được hiển thị. –

+0

Đẹp nhất. Tôi đã không nhận thức được biến thể này của 'Tube'. Nó được giấu trong phần "Thông tin thêm" của trang tài liệu của nó. –

Các vấn đề liên quan