2012-01-07 10 views
5

Tôi có một người bạn cũ là một nhà toán học. Anh ấy có toán học riêng để nén các công thức của mình, những công thức cực kỳ đẹp.Hình dạng toán học và hình khối cứng bằng cách sử dụng canvas và javascript

Anh ấy làm việc trong một chương trình có tên Mathematica, công cụ này biến đổi các công thức cho hình dạng 3D.

Tôi tự hỏi liệu có thể lấy các số liệu này bằng Canvas và JavaScript không? Xem công thức và hình đính kèm.

Tôi biết rất ít về điều này. Nhưng tôi sẽ vui mừng nếu một số người có thể cho tôi xem một ví dụ.

formula

3D-shape

+1

Vậy câu hỏi của bạn là gì? Bạn đang cố gắng tạo một hình ảnh hoặc một mô hình 3D? – nmagerko

+1

Tôi muốn đưa vào công thức ở trên trong javascript một số làm thế nào và recive hình ảnh. Tôi muốn biết nếu điều này là có thể và nếu vậy tôi muốn tìm hiểu làm thế nào để làm điều đó. Một mô hình 3D sẽ thực sự tốt đẹp, nhưng một hình ảnh sẽ trở nên tuyệt vời. Có thể hiểu ý tôi không? – user1087110

+0

Hãy thử dùng google cho "thư viện javascript trực quan hóa công thức toán học" hoặc một thứ gì đó dọc theo các dòng đó. Nếu điều đó không bật lên bất cứ điều gì hữu ích ... có, bạn * có thể * viết một cái gì đó như thế này cho mình, nhưng nó sẽ không được tầm thường. – deceze

Trả lời

5

Kể từ khi bạn đề cập đến Mathematica tôi sẽ sử dụng nó để cung cấp một vài ví dụ khác cho giá trị khác nhau của t. Tôi không thể giúp bạn với vải mặc dù.

Đây là mã Mathematica:

With[{a = 3, t = 0.7}, 
RegionPlot3D[ 
    10^-(t x + y)^10 + 10^-(-t x + y)^10 + 10^-(t y + z)^10 + 
    10^-(-t y + z)^10 + 10^-(t z + x)^10 + 10^-(-t z + x)^10 > 
    5/2, {x, -a, a}, {y, -a, a}, {z, -a, a}, PlotPoints -> 50, 
    Boxed -> False, Axes -> None 
]] 

t = 0,2

Mathematica graphics

t = 0,4

Mathematica graphics

t = 0,7

0.123.

Mathematica graphics

t = 1

Mathematica graphics

+0

Cảm ơn Sjoerd C. de Vries, Không phải bờ tôi hiểu điều này là gì. Đây có phải là công thức được viết bằng javascript không? – user1087110

+2

Không, như tôi đã viết ở trên đây là mã Mathematica. Phương trình của bạn đã bao gồm một tham số t. Tôi cho thấy một số kết quả đầu ra cho các giá trị khác nhau của t, để những người khác ít nhất biết những gì mong đợi (và, tất nhiên, để thể hiện Mathematica) –

4

Đó chắc chắn là có thể. Bạn có thể xem thư viện javascript-surface-plot và ví dụ làm việc tại http://www.grvisualisation.50webs.com/javascript_surface_plot.html. Nó tạo ra một mô hình 3D từ một công thức toán học có thể được quét và xoay theo mong muốn.

Nếu bạn xem mã cho ví dụ này, có một chức năng thiết lập mà bạn cần phải cập nhật cho bất kỳ công thức nào bạn muốn. Chỉ cần chuyển đổi công thức toán học của bạn thành javascript.

Tôi không chắc chắn bạn muốn làm gì với các mô hình này khi bạn có, nhưng thư viện này có vẻ phù hợp với yêu cầu của bạn. Tìm kiếm html canvas 3d plot cũng sẽ xuất hiện thêm các thư viện.

+0

Cảm ơn Bill, trông rất thú vị! Bạn tôi chỉ muốn chia sẻ hình dạng của mình với thế giới (anh ấy đang viết các bài báo khoa học). – user1087110

+1

@ user1087110 Nếu tất cả những gì bạn cần là đặt đồ họa 3D được thực hiện bằng cách sử dụng Mathematica trực tuyến, đặt cược tốt nhất của bạn là http://www.vis.uni-stuttgart.de/~kraus/LiveGraphics3D/ cho Mathematica <= 5.2 hoặc http: // www .javaview.de/cho tất cả các phiên bản khác. – Szabolcs

1

Bạn đang thực sự hỏi hai câu hỏi:

  1. Có bất kỳ thư viện vải 3D: YESK3D
  2. Có thư viện toán học cho javascript: YESdiscussed here

Nếu bạn đang thực hiện các phương trình toán học lõi cứng (có vẻ như bạn), bạn nên làm nó trong một thứ như MatLab/Maple và bán phá giá nó trong một tập tin sau đó sử dụng một thư viện canvas 2D để render hình ảnh. Tôi có rất nhiều dữ liệu 3D và tôi làm điều đó.Tôi chạy một kịch bản Python mà tính toán các điểm sau đó nối nó vào một tập tin html (nhớ, các trang web không thể đọc dữ liệu từ tập tin, vì vậy bạn phải bao gồm các dữ liệu như là một phần của tập tin html của bạn). Sau đó, tôi tải tệp html và hiển thị tạo hình ảnh bằng cách sử dụng EaselJS

+0

Cảm ơn puk, sẽ kiểm tra nó! Bạn có nghĩa là phương trình như thế này là nặng cho một trình duyệt để tính toán? – user1087110

+0

@ user1087110 không, tôi không có nghĩa là, mặc dù chúng ** có thể ** quá nặng đối với trình duyệt của bạn. Tôi không thể nói bởi vì tôi không biết sự phức tạp liên quan đến việc lập bản đồ các chức năng 3D. Những gì tôi biết là một cái gì đó giống như MatLab sẽ được đơn đặt hàng của cường độ hiệu quả hơn. – puk

+0

@ user1087110 Nếu bạn của bạn muốn 'chia sẻ hình dạng của mình với thế giới' thì có những cách dễ dàng hơn. Một hình ảnh 'gif' đơn giản sẽ làm. Nếu anh ta muốn để mọi người xoay/dịch/nghiêng nó, thì tất cả những gì anh ta cần làm là cung cấp các điểm xác định hình dạng. Chỉ khi anh ta muốn mọi người thực sự thay đổi hình dạng là cách tiếp cận này cần thiết – puk

1

Tôi nghĩ rằng WebGL sẽ là lý tưởng cho việc này. Nó được tăng tốc đồ họa trong các trình duyệt mới nhất và có thể hiển thị ở chế độ 3D đầy đủ.

Có thể có các thư viện ở đó có thể hiển thị từ các chức năng ngoài hộp, nhưng đó là một công nghệ mới, do đó bạn có thể phải tự viết nhiều.