试图对一组简单的2d多边形进行三角测量,我想出了这个算法:
我已经对它进行了测试,发现它甚至可以在非常大而复杂的简单2d多边形上工作(它不适用于带有孔或自相交多边形的多边形).
是否有会产生退化结果的角落案例?
这个算法是否已知?
如果没有,我想确定这个算法是坚如磐石的,但我没有数学背景证明它.
非常感谢.
我有一组点,每个点都有一个"影响"或基本上是半径的区域.我希望能够将所有点的这些影响圈中的每一个绘制为简单的圆形线.
它们会重叠,但我希望画出形状的外部.我知道这可能需要我在他们相交的地方锻炼,并以某种方式形成一个完整的形状来绘制.问题是某些点可能甚至没有触及其他点!所以我也需要能够解决这个问题.
我试图说明我的意思:

请注意,我希望简单地画出黑线,没有填充.这是因为我希望透过背景图像和其他几何图形.
我会在openGL中这样做,所以这个圆圈可能是用GL_LINES或其他一些形成曲线的顶点制作的,但我真的不知道如何计算出这个边界.
如果有人有任何建议或者可以指出我将如何解决这个问题,我将不胜感激!
这可能更像是一个数学问题,我不是在寻找代码,而是实际上如何去研究这些形状.我只是想不出怎么做!
*****编辑:我提出的解决方案,希望可以帮助别人!
所以我使用了建议的想法,并且基本上决定了使用模板缓冲区绘制的最佳方法.这现在意味着我循环我的点3次,但我需要仔细分类它们,无论如何只能找到可见的.
所以代码明智我现在有这个:
private void stencilCircleAroundStars()
{
//Lets try and draw something here using stencil
glColorMask(false, false, false, false); //Disable colour mask
glEnable(GL_STENCIL_TEST); // Enable Stencil Buffer For "marking" the outer circle
glDisable(GL_DEPTH_TEST);// Disable Depth Testing
for (Object value : stars.values())
{
Star star = (Star)value;
glStencilFunc(GL_ALWAYS, 1, 1); // Always Passes, 1 Bit Plane, 1 As Mask
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); // We Set The Stencil Buffer To 1 Where We Draw Any …Run Code Online (Sandbox Code Playgroud) 您好我正在尝试构建一个简单的Web浏览器,当我尝试在xcode构建器中运行该程序时,它表示构建成功,然后通过错误并停止加载
错误:
argv char ** 0x00007fff5fbff7b8
*argv char * 0x00007fff5fbff940
**argv char '/(My Directory>>>>)'
Run Code Online (Sandbox Code Playgroud)
输出:
2012-09-09 09:59:52.917 Snow Storm[29121:403] An uncaught exception was raised
2012-09-09 09:59:52.919 Snow Storm[29121:403] *** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (WebView)
2012-09-09 09:59:52.924 Snow Storm[29121:403] (
0 CoreFoundation 0x00007fff85f6ef56 __exceptionPreprocess + 198
1 libobjc.A.dylib 0x00007fff8cb2bd5e objc_exception_throw + 43
2 CoreFoundation 0x00007fff85f6ed8a +[NSException raise:format:arguments:] + 106
3 CoreFoundation 0x00007fff85f6ed14 +[NSException raise:format:] + 116
4 Foundation 0x00007fff8d8bb705 _decodeObjectBinary + 2714
5 Foundation 0x00007fff8d8bc976 -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:] + …Run Code Online (Sandbox Code Playgroud) 我需要找到给定列表中三角形内的点数.这里的问题是,可能有多达一百万点.
我尝试了一种简单的方法:如果三角形的面积等于通过一次取两个三角形点形成的3个三角形的面积之和和要检查的点,则在其内部.这没有任何精度错误,因为我没有除以2来找到该区域.
但我需要更快的东西.目标是速度.是否可以通过某种预处理使其更快,忽略某些基于某些标准或类似的点?
编辑:忘了添加一个关键细节.一旦给出的点数是固定的.然后这些点是静态的,需要检查多达一百万个三角形......
编辑2:证明一个好的(也许是最佳的)方法是使用线扫描.不过,谢谢你的回答!
我手边有一个奇怪的问题,我正在努力寻找解决方案.
我<div>只使用CSS 创建了一个三角形"容器",但我现在想要的是在容器中插入一些文本.
我想要的解决方案必须包含三角形边界内的文本,无论插入多少文本,因为我希望创建缩略图.这里有
一个例子[注意; 这个例子非常基本,只显示我选择创建三角形的方式]
进一步推动它,我想创建一个面朝上的三角形,一个面朝下,文本必须位于每个三角形的底部,因此对于第一个三角形,文本将位于底部,而第二个位于顶部,计划B只是使文本在垂直和水平方向上居中.
CSS:
.up {
text-align:right;
width: 0px;
height: 0px;
border-style: inset;
border-width: 0 100px 173.2px 100px;
border-color: transparent transparent #007bff transparent;
float: left;
transform:rotate(360deg);
-ms-transform:rotate(360deg);
-moz-transform:rotate(360deg);
-webkit-transform:rotate(360deg);
-o-transform:rotate(360deg);
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<div class="up">
<p>some information text goes here<p>
</div>
Run Code Online (Sandbox Code Playgroud) 我正试图从GLSL SLERP(HLSL也可以,因为我的目标是Unity3D)
我找到了这个页面:http://www.geeks3d.com/20140205/glsl-simple-morph-target-animation-opengl-glslhacker-demo
它包含以下列表:
#version 150
in vec4 gxl3d_Position;
in vec4 gxl3d_Attrib0;
in vec4 gxl3d_Attrib1;
out vec4 Vertex_Color;
uniform mat4 gxl3d_ModelViewProjectionMatrix;
uniform float time;
vec4 Slerp(vec4 p0, vec4 p1, float t)
{
float dotp = dot(normalize(p0), normalize(p1));
if ((dotp > 0.9999) || (dotp<-0.9999))
{
if (t<=0.5)
return p0;
return p1;
}
float theta = acos(dotp * 3.14159/180.0);
vec4 P = ((p0*sin((1-t)*theta) + p1*sin(t*theta)) / sin(theta));
P.w = 1;
return P;
}
void main()
{
vec4 P = …Run Code Online (Sandbox Code Playgroud) 我从http://aerotwist.com/lab/getting-started-with-three-js/下载了一个球体示例,我可以看到漂亮的红色球体.我想在上面使用纹理.我试过这个:
var texture = THREE.ImageUtils.loadTexture("ball-texture.jpg");
texture.wrapS = texture.wrapT = THREE.ClampToEdgeWrapping;
texture.repeat.set( 125, 125 );
texture.offset.set( 15, 15 );
texture.needsUpdate = true;
var sphereMaterial = new THREE.MeshBasicMaterial( { map: texture } );
var sphere = new THREE.Mesh(new THREE.Sphere(radius, segments, rings),sphereMaterial);
Run Code Online (Sandbox Code Playgroud)
但我看不到任何东西,一切都是黑色的.有没有人有球体纹理的工作示例?
我正在重新阅读Skiena的算法设计手册,以了解自学校以来我忘记的一些东西,我对他对动态编程的描述感到有点困惑.我看着它在维基百科和其他各种网站,并同时说明一切意义,我无法找出具体的问题我自己.目前,我正在从Skiena的书中解决问题3-5.(给定一个n个实数的数组,找到输入的任何连续子向量中的最大总和.)我有一个O(n ^ 2)解决方案,如本答案中所述.但我坚持使用动态编程的O(N)解决方案.我不清楚复发关系应该是什么.
我看到子序列形成一组总和,如下所示:
S = {a,b,c,d}
a a+b a+b+c a+b+c+d
b b+c b+c+d
c c+d
d
Run Code Online (Sandbox Code Playgroud)
我没有得到的是如何选择哪一个在线性时间内最大.到目前为止,我已经尝试过跟踪最大值的事情,如果当前值为正,则将其添加到总和中.但是当你有更大的序列时,这就成了问题,因为可能有一些负数会减少总和,但是后来的大正数可能会使它恢复到最大值.
我还想起了总面积表.你可以只使用累积和来计算所有的总和:a,a + b,a + b + c,a + b + c + d等等(例如,如果你需要b + c,它只是(a +) b + c) - (a).)但是没有看到O(N)方法来获得它.
任何人都可以向我解释一下这个特定问题的O(N)动态编程解决方案是什么吗?我觉得我几乎得到它,但我错过了一些东西.
我试图在圆圈中获取图像,所以我使用"填充"网址将图像添加到我的圆圈,但似乎无法找到如何在圆圈内定位图像的答案以及如何阻止它重复.我喜欢raphael.js,但它的文档在清晰度和示例方面都非常缺乏.
我听说人们应该制作一个圆形的自定义路径,然后将图像作为自己的对象放置在它可能被定位的位置,但不幸的是我不确定如何实现这个...任何想法?
我试图找到跳过单位球体表面上不同点的点的轨迹的参数方程,这样:
这就是我尝试过的
N = 3600; % number of points
t = (1:N) * pi / 180; % parameter
theta_sph = sqrt(2) * t * pi; % first angle
phi_sph = sqrt(3) * t * pi; % second angle
rho_sph = 1; % radius
% Coordinates of a point on the surface of a sphere
x_sph = rho_sph * sin(phi_sph) .* cos(theta_sph);
y_sph = rho_sph * sin(phi_sph) .* sin(theta_sph);
z_sph = rho_sph * cos(phi_sph);
% Check …Run Code Online (Sandbox Code Playgroud)