小编A D*_*A D的帖子

不能旋转科赫雪花

编辑:我不确定这是否应该是一个新问题所以我现在只是更新这个问题.除非我更改原始坐标,否则现在正在生成雪花.例如,如果我的原始三角形像图片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)

c++ math

7
推荐指数
1
解决办法
1850
查看次数

以第一个元素为枢轴示例的快速排序

我目前正在研究快速排序,想知道当第一个(或最后一个)元素被选为轴心点时它是如何工作的。

例如说我有以下数组:

{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)

sorting quicksort

5
推荐指数
2
解决办法
8万
查看次数

为什么 printf 在无限循环之前不起作用?

我正在尝试制作一个包含无限循环的小程序来等待用户的信号输入。我想在开始无限循环之前打印出有关当前工作目录的消息。该消息自行工作,但是当我将无限循环放入代码中时,该消息不会打印出来(但终端会无限循环)。代码是:

#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 io loops

5
推荐指数
1
解决办法
4611
查看次数

制作Linux shell时流重定向和管道

我有一个在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.txtls -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)

c io redirect pipe

5
推荐指数
1
解决办法
6166
查看次数

为 openGL 提供 3D 坐标的顺序是什么?

我希望有人能为我阐明这个问题。如果给我一个点 (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)

c++ opengl coordinates

5
推荐指数
1
解决办法
409
查看次数

Θ(deg(u))是什么意思?

我以前从未听过这个,或者我用其他方式听过这个?
上下文是对于邻接列表,列出与u相邻的所有顶点的时间是?(deg(u)).
类似地,确定是否(u,v)∈E的时间O(deg(u)).
如果邻接列表的实现是一个数组,那么我认为在数组中找到u将是恒定的时间.
如果所有相邻顶点都链接到u,那么我认为O(n)列出或找到所有顶点需要时间,其中n是相邻顶点的数量.
这基本上?(deg(u))意味着什么?

big-o analysis adjacency-list

3
推荐指数
1
解决办法
771
查看次数

解除引用指针向量的迭代器时的Segfault

我有一个对象指针向量

    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)

c++ pointers vector dereference

3
推荐指数
2
解决办法
3459
查看次数

如何判断命令行参数是否包含流重定向

我正在编写一个程序,如果命令行包含流重定向(例如>或)<,则执行一个操作,否则执行另一个操作.

我的第一直觉是遍历命令行并检查每个参数是否等于重定向符号,如下所示:

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)

有没有更简单的方法可以做到这一点?谢谢你的时间!

java redirect command-line parsing

2
推荐指数
1
解决办法
465
查看次数

安装Maven

我无法正确安装Maven 3.0.3.我已阅读无法在Windows上安装Maven:"JAVA_HOME设置为无效目录",但没有一个答案能够解决我的问题.

这就是我做的:

  • 去了http://maven.apache.org/download.html并下载了apache-maven-3.0.3-bin.zip
  • 将文件提取到C:\ Program Files,所以我现在有一个名为apache-maven-3.0.3的目录
  • 去了我系统的环境变量并创建了用户变量M2_HOME,值是C:\Program Files\apache-maven-3.0.3\bin
  • JAVA_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)

installation environment-variables maven

1
推荐指数
2
解决办法
8255
查看次数

提高简单TCP客户端/套接字上的数据传输速度

我有一个家庭作业,通过重定向标准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)

java sockets tcp stream

1
推荐指数
1
解决办法
3700
查看次数

获取未定义的引用错误

我希望有人可以指出我正确的方向,找出为什么我收到以下错误:

$~/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)

c++

1
推荐指数
1
解决办法
78
查看次数