- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在为我的 Java 类(class)分配作业时遇到问题。我需要
Implement a Sierpinski gasket. Do not use triangles or recursion. This is the Chaos version that only uses points.
下面是我已经实现的。我得到的只是绘制的前三个点:x、y 和 z。 while 循环中有一个问题(或多个问题)。任何有关如何解决此问题的建议将不胜感激。谢谢,我被困住了!
SierpinskiGasket.java
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class SierpinskiGasket extends JFrame{
//Class constructor
public SierpinskiGasket(){
Container c = getContentPane();
JPanel jp = new JPanel();
jp.setBackground(Color.white);
c.add(jp);
setTitle("Sierpinski Gasket");
setSize(new Dimension(400,400));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void paint(Graphics g){
super.paint(g);
int count = 0,
vert = 0;
Random rndm = new Random();
//Create the three vertices of the triangle
Point x=new Point(200,50),
y=new Point(350,350),
z=new Point(50, 350),
current=x, target = null;
if(count==0){ //Draw the three points of the vertices
g.drawLine(x.x,x.y,x.x,x.y); //Top of the triangle
g.drawLine(y.x,y.y,y.x,y.y); //Right of triangle
g.drawLine(z.x,z.y,z.x,z.y); //Left of triangle
}else{
//The loop uses a random number to chose one of the three vertices of the triangle.
//It then makes that point the target point
while(count<1000){
vert = rndm.nextInt(3);
//Switch statement assigns one of the vertices to the target
switch(vert){
case 0: target=x; break;
case 1: target=y; break;
case 2: target=z; break;
}
//Calculates the mid point between the current and the target
current = midpoint(current, target);
//Draws the point calculates in midpoint()
g.drawLine(current.x, current.y, current.x, current.y);
//Repaint
repaint();
//Increase the count
count++;
}
}
}
/**
* Calculates the midpoint between the two points
* @param c
* @param t
* @return The midpoint
*/
public Point midpoint(Point c, Point t){
return new Point((Math.round((c.x+t.x)/2)),
Math.round(((c.y+t.y)/2)));
}
}
Gasket.java
public class Gasket {
public static void main(String[] args) {
new SierpinskiGasket();
}
}
最佳答案
您的 while 循环根本没有执行。这是您修复和清理的代码(不要过度注释您的代码):
public class SierpinskiGasket extends JFrame {
public static void main(String[] args) {
new SierpinskiGasket();
}
// Class constructor
public SierpinskiGasket() {
Container c = getContentPane();
JPanel jp = new JPanel();
jp.setBackground(Color.white);
c.add(jp);
setTitle("Sierpinski Gasket");
setSize(new Dimension(400, 400));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void paint(Graphics g) {
super.paint(g);
Random rndm = new Random();
Point pt0 = new Point(200, 50);
Point pt1 = new Point(350, 350);
Point pt2 = new Point(50, 350);
Point current = pt0;
g.setColor(Color.RED);
drawPoint(g, pt0);
drawPoint(g, pt1);
drawPoint(g, pt2);
Point[] pts = { pt0,pt1,pt2 };
for (int i = 0 ; i < 10000 ; i++) {
current = midpoint(current, pts[rndm.nextInt(3)]);
drawPoint(g, current);
}
}
private static void drawPoint(Graphics g, Point p) {
g.drawLine(p.x, p.y, p.x, p.y);
}
/**
* Calculates the midpoint between the two points
*
* @param c
* @param t
* @return The midpoint
*/
public Point midpoint(Point c, Point t) {
return new Point((Math.round((c.x + t.x) / 2)),
Math.round(((c.y + t.y) / 2)));
}
}
你的count
变量是本地的,所以总是重新初始化为0。我没有保留它,因为它使用了奇怪的递归,而你的循环本身就足够了。最后,paintComponent
永远不应该调用 repaint
。
除此之外,你的算法是正确的:)
关于java - 带点的谢尔宾斯基垫片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31571489/
我正在尝试使用 Intern 测试 Require.js 项目。我在测试中遇到错误,其中在加载 jQuery 插件时未定义 jQuery。我的加载器配置如下所示: loader: { // A
还没有很多浏览器支持 WebRTC,但是有很多很酷的 WebRTC 东西可以玩——PeerDB 等。 是否有任何类型的 shim 用于在浏览器中欺骗 WebRTC API(这样 PeerDB 之类的东
我是堆栈 overflow 的新手。 :-) 如何创建一个自动改变高度的 div 来填满所有空间?我试过 高度:“自动” 但不起作用... :( 例如: ... The height
Windows 能够应用 shims to mis-behaving applications .垫片用于拦截 API 调用并更改它。例如,垫片可用于: 修改传入参数 谎报返回值 改成别的名字 App
以下代码在 IE9+(以及 Firefox 和 Chrome)中播放声音。是否有一个库可以为 IE8 实现/填充缺失的功能(audio 元素和 play() 方法)? 我做不到mediaelement
我有以下指向 backbone.d.ts 定义的内容。 import Backbone = module("../../../dep/backbone/backbone"); export class
我们通常会检查 jQuery 是否从 CDN 加载,如果没有则回退到本地版本。 window.jQuery || document.write('') 我正在使用 twitter bootstrap
我有一些 qunit 测试设置来测试我广泛使用 requirejs 的代码。我使用 Chutzpah 来执行在 VS 中运行的测试。如果我在浏览器中运行测试而不是仅在 VS 中运行测试,则一切正常。它
我正在为 ECMAScript Internationalization API 寻找垫片.有人知道这样的项目吗? (即使它目前仍在进行中。) 最佳答案 是的,有一个适用于 ECMA-402 的 po
我已经使用 Cordova 创建了一个 Web 应用程序,我需要在后台显示实时摄像头流。 Cordova 的相机/视频 API 似乎只是打开 native 相机/视频应用程序,而不是返回实时相机数据。
我正在尝试关注 this example并利用 shim 删除对 WCF 服务调用的外部依赖,该服务调用是从我正在执行单元测试的方法中调用的。与示例不同,我使用类似于以下的代码即时生成我的 WCF 客
我的服务器运行的是 PHP 5.2。是否有一组垫片以便我可以在 PHP 5.2 中至少使用 PHP 5.3 的一些新功能?喜欢: 最佳答案 我记不起 5.3 和 5.4 带来的所有功能,但简短的回答
如何为 C 库编写自定义 Emscripten 垫片? Emscripten 为某些 C 库(例如 SDL 和 OpenAL)捆绑了垫片,但对于其他库,您将不得不自己动手。 我所说的 shim 是指要
Internet Explorer 没有实现 ArrayBuffer.prototype.slice .令人惊讶的是,他们 don't plan on implementing it any time
我在 Dart 中有 Angular2 应用程序(如此处 - https://angular.io/docs/dart/latest/quickstart.html )并从那里调用 javascrip
这个问题在这里已经有了答案: What is TypeScript and why would I use it in place of JavaScript? [closed] (5 个答案) 关
我有以下代码: requirejs.config({ shim: { 'underscore': { exports: '_' },
Internet Explorer 不支持“const”关键字。我可以使用垫片来检查是否支持“const”,如果不支持,则将其重新定义为 var 吗?我想如果它能强制保持恒定性就好了,也许可以使用 o
所以我使用 background-size:cover 来实现背景图像的预期效果,该背景图像可以缩放到它所应用的任何 div 大小,同时保持纵横比。为什么要使用这种方法?根据相关 WordPress
我是一名优秀的程序员,十分优秀!