用鼠标闪烁旋转我的rgl
模型(注意模型底部的黑线,旋转时会疯狂跳跃)。这是我的代码中的错误或错误吗?
install.packages("rgl")
library(rgl)
x <- seq(-pi, pi, len = 10)
y <- seq(-pi, pi, len = 10)
f <- function(x, y) { r <- sqrt(x^2 + y^2); 10 * sin(r)/r }
z <- outer(x, y, f)
persp3d(x, y, z, col = "Red")
surface3d(x, y, z, back = "lines")
surface3d(x, y, z, front = "lines")
我的环境
R version 3.4.1 (2017-06-30)
Platform: x86_64-apple-darwin16.7.0 (64-bit)
Running under: macOS Sierra 10.12.6
rgl_0.98.1
答案 0 :(得分:1)
闪烁的常见原因是舍入错误:你在同一个地方过度绘制三个曲面,但使用不同的方法来显示它们(“填充”,默认和“行”。每次调用{{1两种情况都有。)不同的方法被用来计算每个像素的深度,有时一个出现在前面,有时是另一个,即使第一个表面(红色表面)应该在每种情况下都胜出,除非你已修改users-count
。
rgl很难做你想做的事情。您可以使固体表面半透明,例如
private final JTextField searchText;
searchText= new JTextField(20);
JButton go=new JButton("Go!!");
go.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String query=searchText.getText();
Coordinate p = JMapViewer.getPosition(SearchAction.search(query));
LayerGroup search=new LayerGroup("Search");
Layer searchGroup=search.addLayer("Search Layer");
String res= map().getName();
double latpos=p.getLat();
double lonpos=p.getLon();
MapMarkerDot show=new MapMarkerDot(searchGroup,query,latpos,lonpos);
}
private String search(String query) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
private String searchAction(String query) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
});
但它并不完美。如果你写一个“着色器”,你可能会做得更好,但这很难,并且只在WebGL中支持。
如果您稍微移动线条表面并使用surface3d
进行播放,则可能会出现针对您的特定示例的最佳显示,例如
material3d("depth_test")
但转移的数量和方向取决于您要显示的内容,因此这并非易事。