Optimal number of points to plot a sphere
조회 수: 1 (최근 30일)
이전 댓글 표시
hi all,
I have thousands of data points in (x y z) format to represent the human eye. Since the human eye is modeled like a sphere, is there any way where i can reduce the number of data points to plot the human eye without any distortion of the shape?
Best Regards, natur3
댓글 수: 0
채택된 답변
Walter Roberson
2012년 9월 15일
Calculate the linear distance in pixel-widths between the center of the sphere and the edge. Using that as a radius, calculate the surface area in pixels. If you have more points than that surface area, you can prune back and still have full graphic representation at that drawing scale.
You can probably prune even further than that, but the calculation gets more difficult.
댓글 수: 8
Walter Roberson
2012년 9월 17일
[X, Y, Z] = ndgrid(-18:18); %pixels
R = sqrt(X.^2 + Y.^2 + Z.^2);
onsurface = 15.5 <= R & R < 16.5;
nnz(onsurface)
gives 3338.
Here, "R" is the actual radius at each integer coordinate triple, whereas in 4*Pi*r^2 the "r" is the desired theoretical radius.
There are going to be only 6 integer coordinate triples whose distance is exactly 16: (-16,0,0), (16,0,0), (0,-16,0), (0,16,0), (0,0,-16), (0,0,16). In order to fill out the sphere, we need to select which integer triples are "effectively" at distance 16. I used the semi-open radius range [15.5, 16.5) in my test, selecting the points whose center lies in a thin shell between 15.5 (inclusive) and 16.5 (exclusive) away from the origin. This slightly over-selects points compared to the ideal 4*Pi*(16)^2 as a larger radius is being included and reachable points within a given distance expand with the cube of the radius. The best matching spherical shell should likely be a little thinner than 16.5 at maximum, possibly around 16.2
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Lighting, Transparency, and Shading에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!