я все,Плавающие значения изменения
Я заинтересован в изучении компьютерной графики алгоритмов и я делаю забавную упражнения здесь:
http://groups.csail.mit.edu/graphics/classes/6.837/F03/assignments/assignment0/index.html
Однако, у меня возникли проблемы с получением мой Класс IFS должен принимать значения с плавающей запятой правильно. Вот интерфейс:
#ifndef _IFS_H_
#define _IFS_H_
#include "matrix.hpp"
#include "Image.hpp"
class IFS
{
public:
IFS(const char* filename);
~IFS();
void render(Image& img, int numPoint, int numIterations);
void printOut();
private:
int num_transforms; // number of transformations
Matrix* matrices;
float* probablility;
};
#endif
Вот реализация:
#include "IFS.h"
#include <iostream>
IFS::IFS(const char* filename){
FILE* input = fopen(filename,"r");
assert(input != NULL);
fscanf(input,"%d",&num_transforms);
matrices = new Matrix[num_transforms-1];
probablility = new float[num_transforms-1];
float temp;
for (int i = 0; i < num_transforms; i++) {
fscanf (input,"%f",&temp);
std::cout << temp << std::endl;
probablility[i] = temp;
std::cout << probablility[i] << std::endl;
matrices[i].Read3x3(input);
}
fclose(input);
}
IFS::~IFS(){
delete matrices;
delete probablility;
}
void IFS::printOut(){
std::cout << "Number of transformsations: " << num_transforms << std::endl;
std::cout << probablility[0] << std::endl;
for(int i = 0; i < num_transforms; i++){
std::cout << "Number of iterations: " << i << std::endl;
std::cout << probablility[i] << std::endl;
matrices[i].Write3x3();
}
}
void IFS::render(Image& img, int numPoint, int numIterations){
std::cout << "In Progress" << std::endl;
}
Вот моя главная функция:
#include <cstdio>
#include <cstdlib>
#include <iostream>
#define HEIGHT 480
#define WIDTH 640
#include "image.hpp"
#include "matrix.hpp"
#include "vectors.hpp"
#include "utils.h"
#include "IFS.h"
int main(void){
IFS myIFS("dragon.txt");
myIFS.printOut();
std::cout << "Hello world" << std::endl;
getchar();
return 0;
}
Вот dragon.txt:
2
0.5
0.500124 0.499725 -0.250062
-0.499725 0.500124 0.249863
0.000000 0.000000 1.000000
0.5
-0.499327 0.500521 0.749664
-0.500521 -0.499327 0.750261
0.000000 0.000000 1.000000
И вот вывод:
Я не изменил любой код стартера с сайта. Я не могу понять проблему. Кажется, что конструктор принимает значения . Значения изменяются оттуда до метода IFS :: printOut() . Кто-нибудь знает, что происходит?
Не используйте ТАВ. И, пожалуйста, отформатируйте и упростите код, который вы публикуете: Оставьте «# ifndef' &' # define' '_IFS_H_', удалите ненужные пустые строки ... Затем опишите вашу проблему более подробно, потому что мне непонятно, что вы имеете в виду (и не ожидайте, что другие проанализируют ваш код, ищущий смысл). –
-1 для прикрепления скриншота ** текста **. –
Этот вопрос не показывает достаточного усилия, чтобы сузить проблему и быть кратким. –