好的,这里有一个奇怪的问题,我有问题(用gcc btw编译)
下面是用于命令提示的Mandelbrot分形生成器的源代码。我以前做过这项工作,我想加快自己的测试速度,看看我能以多快的速度生成命令提示符中实际生成Mandelbrot分形所需的代码。我经常这样做是为了给自己找点乐子
不管怎样,我遇到了一个新问题,我不太明白问题是什么。当分形呈现时,无论我设置了多少次迭代或什么转义值,它都将始终显示为椭圆形!它不应该这样做。
你们这些mandelbrot/cpp极客能帮我找出为什么我没有得到更多的mandelbrot形状吗?
#include <stdio.h>
#include <math.h>
#define DOSWidth 80
#define DOSHeight 25
int iterations = 1024;
float escapeValue = 3.0f;
struct ivar {
ivar(float _x, float _i) {
x = _x;
i = _i;
}
void log() {printf("(%g%c%gi)", x, (i<0)?'-':'+', fabs(i));}
float magnitude() {return sqrtf(x*x+i*i);}
ivar square() {return ivar(x, i)*ivar(x, i);}
ivar operator + (ivar v) {return ivar(x+v.x, i+v.i);};
ivar operator - (ivar v) {return ivar(x-v.x, i-v.i);};
ivar operator * (ivar v) {return ivar(x*v.x-(i*v.i), x*v.i+i*v.x);};
float x, i;
};
struct rect {
rect(float _x, float _y, float _width, float _height) {
x = _x;y = _y;width = _width;height = _height;
}
void setCenter(float cx, float cy) {
x = cx-width/2.0f;
y = cy-width/2.0f;
}
void log() {printf("(%f, %f, %f, %f)", x, y, width, height);}
float x, y;
float width, height;
};
int main() {
rect region = rect(0, 0, 2.5f, 2.0f);
region.setCenter(0, 0);
float xSize = region.width / (float)DOSWidth;
float ySize = region.height / (float)DOSHeight;
for(int y=0;y<DOSHeight;y++) {
for(int x=0;x<DOSWidth;x++) {
ivar pos = ivar(x*xSize+region.x, y*ySize+region.y);
bool escapes = false;
for(int i=0;i<iterations;i++) {
if(pos.magnitude() > escapeValue) {
escapes = true;
break;
}
pos = pos.square();
}
if(escapes)printf(" ");
else printf("X");
}
}
}
谢谢如果你能走到这一步,感谢你的帮助!
您的逸出值太低,应为4.00f。
您只是递归地平方pos
,直到其大小超过限制。这不会产生分形;它将产生一个单位圆。
您需要在每次迭代后将(x,y)坐标添加到平方值。见维基百科。
编辑:几个小改动,瞧。
问题内容: 当网站输出到客户端时,我正在尝试优化网站的大小。缓存时,我分别只有1.9MB和29KB。问题在于,第一次加载包含的图像对于移动设备而言并未经过优化。它具有1080p分辨率。 因此,我正在寻找一种方法,该方法允许我首先加载低分辨率版本(),一旦网站加载完毕,请使用高分辨率版本- 甚至分辨率接近所用设备的分辨率版本(或只是) 。 就像每个人都期望的那样,使用CSS设置背景。它应用于主体,整
功能介绍 获取百度移动统计平台的全部屏幕分辨率列表 接口 https://openapi.baidu.com/rest/2.0/mtj/svc/config/getScreenList?access_token={ACCESS_TOKEN} 请求参数 参数名 类型 描述 样例 access_token string 用户登入后获取的token 1.a6b7dbd428f731035f771b8d
问题内容: 我需要使用Java程序减小图像的大小(而不是宽度和高度)。他们为此提供了任何好的API吗? 我需要将大小从1MB减少到大约50kb-100 kb。当然,分辨率会降低,但这并不重要。 问题答案: 这是工作代码 这段代码对我来说很棒。如果需要调整图像大小,则可以在此处更改x和y比例J;
问题内容: 我想用Java模拟TCP。 为此,我有多个线程,例如每个TCP连接的发送者和接收者线程。 我的问题是,我想暂停(如Thread.sleep())线程数微秒的时间间隔。这样我就可以模拟流控制,发送者线程将在发送下一个数据包之前阻塞几微秒,同时接收和数据处理线程可以使用CPU。但是我找不到任何执行sleep()或wait()的方法来获得微秒或纳秒分辨率。如何以微秒或纳秒分辨率阻塞(暂停)J
我想用Java模拟TCP。 我找到了System.nanotime()方法,但是没有方法可以在指定的微秒或纳秒内阻塞线程。如果有这样的方法,那么请让我知道。system.nanotime()只是给出了以纳秒为单位的相对时间间隔。 我可以使用System.nanotime()在使用busy-loop的线程中执行纳秒级延迟,但这将浪费CPU时间,而CPU本来可以用于接收数据线程或处理线程。 另一个令人
iPhone 分辨率汇总 机型分辨率 iPhone型号 pt scale px 宽高比 statusBar tabBar iPhone 4s 320 * 480 2 1.5 20 49 iPhone 5 320 * 568 2 1.775 ↑ ↑ iPhone 5s 320 * 568 2 1.775 ↑ ↑ - - - - - - - iPhone 6/7/8 375 * 667 2 1.778