- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在寻找一种算法来生成 knots 的图形表示(2D 或 3D,但前者最好是 vector 图形)。
我看到了很多关于结理论的链接,范围从 punctual references 到 general information。
在尝试自己从头开始设计一些东西之前,我想了解一些现有软件的存在,这些软件不仅可以让您代表它们(在内存中),还可以在它们的一些图形表示中可视化(有 many ) .它可以以库或简单函数的形式出现,甚至可以是试图指定如何在屏幕上正确绘制知识的伪代码算法。
正如前面的链接所暗示的,Wolfram Mathematica 中有一个名为 KnotTheory
的程序包可以执行此操作(以几乎完整的方式)。但是,它不是可移植的,也不是免费软件,访问它的模块对我来说非常麻烦(Java 中的免费实现,只是命名一种语言,但每种语言都很好,从可移植性和开放性的角度来看是理想的) .
我看到 many 软件可用(但 most of them 是旧软件,无法访问或使用)。您有一些好的建议可以分享吗?
更新:由于出现了两次结束该问题的投票,我将以一种更加务实和清晰的方式重申它:是否有绘制和生成结的算法?有什么东西已经实现了吗
更新 2(重新开放)图形表示可以是 3D 渲染对象或 2D svg 图形(我从中抽象出来,因为我期待一种编程语言作为处理(或相同的 Mathematica 本身),它为您提供绘制曲线的基元(样条曲线,贝塞尔曲线,等)在屏幕上(然后将它们导出为光栅或 vector 图形)。该算法应将一个结参数化作为输入(即,如果我们谈论由它们的交叉属性描述的结,则它们的值就是所需要的),返回上面的图形表示之一(即甚至是二维空间中的一系列点).也就是说,任何参数化都可以,我的目标只是反射(reflection)如何打结,以便获得一种以特定方式执行此操作的算法,从而产生特定的表示形式,这很好(Mathematica 的库似乎能够以如此多的表示形式绘制它)。
最佳答案
是这样的吗?
void setup() {
size(300, 300, P3D);
}
void draw() {
background(36, 10, 28);
int f = frameCount%360;
translate(width/2, height/2);
if (frameCount >= 360 && frameCount <= 1080 )
rotateY(radians(f));
stroke(0);
drawKnot(40);
translate(knotX(f)*40, knotY(f)*40, knotZ(f)*40);
noStroke();
fill(180,50,145);
sphere(10);
}
void drawKnot(float sz) {
stroke(200);
for (int i = 0; i < 360; i++) {
point(knotX(i)*sz, knotY(i)*sz, knotZ(i)*sz);
}
}
float knotX(int n) {
return sin(radians(n)) + 2*sin(radians(n*2));
}
float knotY(int n) {
return cos(radians(n)) - 2*cos(radians(n*2));
}
float knotZ(int n) {
return sin(radians(n*3))*-1;
}
关于java - 按程序生成结(并将其可视化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25443480/
所以我在 JPanel 中全面移动 Snake 时遇到了一些问题。现在这不是 JPanel 的问题或错误,我只是无法按应有的方式移动 Snake。我知道问题出在哪里,但我就是想不出一种方法让它正常工作
我是一名优秀的程序员,十分优秀!