编辑:我不确定这是否应该是一个新问题所以我现在只是更新这个问题.除非我更改原始坐标,否则现在正在生成雪花.例如,如果我的原始三角形像图片1,则5次迭代后的结果是图片2:

但是,如果我的原始三角形有任何不同,例如图片3,则结果会出现偏差:

我再次认为问题在于我的常规,但我真的迷失了.我已经尝试了几个小时来找出正确的公式来做到这一点,但我并没有真正取得任何进展.由于似乎很多时候问题是新三角形被倒置了,我怀疑atan在给它一个正值时给了我一个负值.有没有数学方法可以解决这个问题?非常感谢你的帮助!
我的代码(减去openGL部分,因为我不认为它们是问题)是:
const int NumTimesToSubdivide = 5;
const int NumSegments = 3072; // 3x4^n lines generated {3, 12, 48, 192, 768, 3072..}
const int NumVertices = NumSegments * 2; // 2 vertices for each segment
vec2 arrayA[NumVertices];
vec2 arrayB[NumVertices];
//----------------------------------------------------------------------------
void koch( const vec2 &a, const vec2 &b, vec2 * verts) {
/* Calculate new segments.
* v1
* /\
* / \
* / \
* a----/ \----b
* v0 v2
*/
vec2 v0;
vec2 v1;
vec2 …Run Code Online (Sandbox Code Playgroud) 我目前正在研究快速排序,想知道当第一个(或最后一个)元素被选为轴心点时它是如何工作的。
例如说我有以下数组:
{15, 19, 34, 41, 27, 13, 9, 11, 44}
Run Code Online (Sandbox Code Playgroud)
这就是我认为会发生的事情:
{15, 19, 34, 41, 27, 13, 9, 11, 44}
^
pivot
{15, 19, 34, 41, 27, 13, 9, 11, 44}
^ ^
compare these two, they are good
{15, 19, 34, 41, 27, 13, 9, 11, 44}
^ ^
compare these two and swap
{11, 19, 34, 41, 27, 13, 9, 15, 44}
^ ^
compare these two and swap
{9, 19, 34, 41, 27, 13, 11, 15, …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个包含无限循环的小程序来等待用户的信号输入。我想在开始无限循环之前打印出有关当前工作目录的消息。该消息自行工作,但是当我将无限循环放入代码中时,该消息不会打印出来(但终端会无限循环)。代码是:
#include <stdio.h>
int MAX_PATH_LENGTH = 100;
main () {
char path[MAX_PATH_LENGTH];
getcwd(path, MAX_PATH_LENGTH);
printf("%s> ", path);
while(1) { }
}
Run Code Online (Sandbox Code Playgroud)
如果我取出,while(1) { }我会得到输出:
ad@ubuntu:~/Documents$ ./a.out
/home/ad/Documents>
Run Code Online (Sandbox Code Playgroud)
为什么是这样?谢谢!
我有一个在C中创建Linux shell的任务.目前,我仍然坚持实现重定向和管道.我到目前为止的代码如下.main()解析用户的输入.如果内置命令,则执行该命令.否则,标记化的输入传递给execute()(我知道我应该把内置命令拉到自己的函数中).
execute()的作用是遍历数组.如果遇到<,>或者|它应该采取适当的行动.我试图正常工作的第一件事是管道.不过,我肯定做错了,因为即使是一个烟斗也无法让它工作.例如,一个示例输入/输出:
/home/ad/Documents> ls -l | grep sh
|: sh: No such file or directory
|
Run Code Online (Sandbox Code Playgroud)
我的想法是让每个方向和管道仅适用于一个案例,然后通过使函数递归,我希望在同一命令行中使用多个重定向/管道.例如,我可以做program1 < input1.txt > output1.txt或ls -l | grep sh > output2.txt.
我希望有人可以在尝试管道时指出我的错误,并且可能提供一些关于如何处理用户输入多个重定向/管道的情况的指示.
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
int MAX_PATH_LENGTH = 1024; //Maximum path length to display.
int BUF_LENGTH = 1024; // Length of buffer to store user input
char * delims = " \n"; // Delimiters for tokenizing …Run Code Online (Sandbox Code Playgroud) 我希望有人能为我阐明这个问题。如果给我一个点 (i, j, k),我可以制作以下立方体:
8______K_______7 1 = i , j , k
/| /| 2 = i+1, j , k
L/ | J/ | 3 = i+1, j+1, k
/ |H / | 4 = i , j+1, k
5/______I_____/6 |G 5 = i , j , k+1
| | | | 6 = i+1, j , k+1
| | | | 7 = i+1, j+1, k+1
E| 4|________|F__|3 8 = i , j+1, k+1
| / c | / …Run Code Online (Sandbox Code Playgroud) 我以前从未听过这个,或者我用其他方式听过这个?
上下文是对于邻接列表,列出与u相邻的所有顶点的时间是?(deg(u)).
类似地,确定是否(u,v)∈E的时间O(deg(u)).
如果邻接列表的实现是一个数组,那么我认为在数组中找到u将是恒定的时间.
如果所有相邻顶点都链接到u,那么我认为O(n)列出或找到所有顶点需要时间,其中n是相邻顶点的数量.
这基本上?(deg(u))意味着什么?
我有一个对象指针向量
std::vector<Element*> elements;
Run Code Online (Sandbox Code Playgroud)
在迭代向量时,我想重新引用迭代器以调用对象的方法.
std::cout << (*it)->getName() << std::endl;
Run Code Online (Sandbox Code Playgroud)
这导致了段错误.相关代码如下.
我认为问题在于我如何初始化向量,因为我可以将for循环移动到方法中initialize()并且它工作正常.在takeTurn(),向量具有适当的大小,指针包含正确的地址.这是否意味着被指向的对象过早被破坏?
main.cpp中:
#include <vector>
#include <iostream>
#include "Element.h"
std::vector<Element*> elements;
void initialize() {
Element ice = Element("ice",1);
Element fire = Element("fire",2);
elements.push_back(&ice);
elements.push_back(&fire);
}
void takeTurn() {
std::vector<Element*>::iterator it;
for(it = elements.begin(); it != elements.end(); ++it) {
std::cout << (*it)->getName() << std::endl;
}
}
int main() {
initialize();
takeTurn();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
element.h展开:
#include <string>
class Element {
public:
Element(std::string name, int id);
int getID() { …Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序,如果命令行包含流重定向(例如>或)<,则执行一个操作,否则执行另一个操作.
我的第一直觉是遍历命令行并检查每个参数是否等于重定向符号,如下所示:
public boolean hasRedirection(String[] args){
boolean flag = false;
int length = args.length;
int i;
for(i = 0; i < length; i++){
System.out.println(args[i]);
if(args[i].equals(">") || args[i].equals("<"))
flag = true;
}
return flag;
}
Run Code Online (Sandbox Code Playgroud)
但是,它总是返回false.该行System.out.println(args[i]);显示未识别任何重定向和后续文件名.例如:
project\src>java myProgram.Client localhost 1234 > myFile.txt
localhost
1234
Run Code Online (Sandbox Code Playgroud)
而它应该是:
project\src>java myProgram.Client localhost 1234 > myFile.txt
localhost
1234
>
myFile.txt
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法可以做到这一点?谢谢你的时间!
我无法正确安装Maven 3.0.3.我已阅读无法在Windows上安装Maven:"JAVA_HOME设置为无效目录",但没有一个答案能够解决我的问题.
这就是我做的:
M2_HOME,值是C:\Program Files\apache-maven-3.0.3\binJAVA_HOME 变量设置正确,可以从cmd行获取版本PATH所以价值现在%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseHg\;%JAVA_HOME%;%M2_HOME%当我去cmd时,我就是这样:
D:\>java -version
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)
D:\>mvn --version
'mvn' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
但是,如果我实际上在目录中,我可以执行以下操作:
D:\>cd C:\Program Files\apache-maven-3.0.3\bin
D:\>C:
C:\Program Files\apache-maven-3.0.3\bin>mvn --version
Apache Maven 3.0.3 (r1075438; 2011-02-28 11:31:09-0600)
Maven home: C:\Program Files\apache-maven-3.0.3
Java …Run Code Online (Sandbox Code Playgroud) 我有一个家庭作业,通过重定向标准I/O来创建一个带有客户端/服务器TCP套接字对的简单数据传输机制.我实际上有它工作,但当我尝试传输大文件(比如~5g)时,速度会急剧减慢.我正在使用BufferedInputStream和BufferedOutputStream,我想也许我可以在那里进行一些优化.我的服务器的代码是:
private static final int BUF_SIZE = 2047;
public static void main(String[] args) throws IOException{
/*
* Attempt to parse command line arguments.
* @require args[0] is an int
*/
int port = 0;
try {
port = Integer.parseInt(args[0]);
} catch(NumberFormatException e) {
System.err.println("Port must be an integer in range 0 - 65535.");
System.exit(-1);
}
/*
* Bind server socket to specified port number and wait for request.
* @require port >= 0 && port <= 65535
*/
ServerSocket welcomeSocket …Run Code Online (Sandbox Code Playgroud) 我希望有人可以指出我正确的方向,找出为什么我收到以下错误:
$~/display/triangleDisplayable.cc:4: undefined reference to `Displayable::Displayable()'
Run Code Online (Sandbox Code Playgroud)
我试图抽象一个类,Displayable并有一个triangleDisplayable实现其方法的类.我有两个头文件是"Displayable.h":
class Displayable {
public:
Displayable();
virtual int getSizeOfArrays() = 0;
void display(int size);
private:
virtual void init() = 0;
virtual int getSizeOfPointsArray() = 0;
virtual int getSizeOfNormalsArray() = 0;
};
Run Code Online (Sandbox Code Playgroud)
和"triangleDisplayable.h"
#include "Displayable.h"
class triangleDisplayable : public Displayable
{
public:
triangleDisplayable();
int getSizeOfArrays();
private:
void init();
int getSizeOfPointsArray();
int getSizeOfNormalsArray();
};
Run Code Online (Sandbox Code Playgroud)
然后我有"Displayable.cc"
#include <iostream>
#include "Displayable.h"
Displayable::Displayable() {
std::cout << "testing Displayable constructor" << std::endl;
}
void Displayable:display(int size) …Run Code Online (Sandbox Code Playgroud)