基于方位角与高度的球面区域着色及球面直方图优化需求
球面直方图单元格着色与遍历问题
问题背景
我正在构建球面直方图,数据点为纬度和经度值,需要基于位置而非仅按索引为球体的指定单元格区域着色。此前针对部分方位角(azimuth)和高度角(elevation)区域遗漏的问题找到过解决方案,但该方案存在一处azimuth区域空白,且遍历排序不符合预期。
现有代码
n = 20; [x,y,z] = sphere(n); r = 1; surf(r.*x,r.*y,r.*z,'FaceColor', 'white', 'FaceAlpha',0); %// Base sphere hold on; for countAz = 1:1:n for countE = 1:1:n % Linear index for a 2x2 patch of the matrices idx = countAz + [0,1,n+(1:2)] + (countE-1)*n; % Pull out the coordinates, reshape for surf x2 = x(idx); x2 = reshape(x2,2,2); y2 = y(idx); y2 = reshape(y2,2,2); z2 = z(idx); z2 = reshape(z2,2,2); random_color = rand(1,3); surf(r*x2,r*y2,r*z2,'FaceColor',random_color, 'FaceAlpha',1); end end
异常现象
- 固定
countAz仅改变elevation时,出现螺旋效果,理论上azimuth应保持不变 - 固定
countE仅改变azimuth时,会为给定azimuth索引的所有elevation层级着色,与预期效果相反 - 存在azimuth区域空白的问题
需求
求一种更系统化的遍历elevation和azimuth范围的方法,避免出现空白单元格。期望实现:先遍历某一elevation范围内、由两个azimuth值界定的所有单元格,再进入下一elevation层级,以便将输入的经纬度值对应到内层循环对应的azimuth和elevation值。
内容的提问来源于stack exchange,提问作者yes
相关产品推荐
相关产品推荐

