Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
Danzel
6 / 6 / 3
Регистрация: 21.08.2012
Сообщений: 45
#1

Фрактал Джулия - C++

07.09.2012, 18:42. Просмотров 2124. Ответов 7
Метки нет (Все метки)

Здравствуйте, решил разобраться с примером по куда из книги Сандерса,вот код:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "gl_helper.h"
#include "cpu_bitmap.h"
#include "book.h"
 
#define DIM 1000
 
struct cuComplex 
{
    double r;
    double i;
    cuComplex( double a, double b) : r(a), i(b) {}   //конструктор
    __device__ double magnitude2(void)
    {
        return r*r+i*i;
    }
    __device__ cuComplex operator+(const cuComplex& a)
    {
        return cuComplex(r+a.r, i+a.i);
    }
 
    __device__ cuComplex operator*(const cuComplex& a)
    {
        return cuComplex(r*a.r-i*a.i, i*a.r+r*a.i);
    }
};  
 
 
 __device__ int julia(int x, int y)
{
    const float scale = 1.5;
    double jx=scale*(double)(DIM/2 - x)/(DIM/2);
    double jy=scale*(double)(DIM/2 - x)/(DIM/2);
    cuComplex  c(-0.8, 0.156);
    cuComplex  a(jx , jy);
 
    int i=0;
    for(i=0;i<200;i++){
        a=a*a + c;
        if(a.magnitude2()>1000)
            return 0;
    }
    return 1;
}
 
 
 __global__ void kernel(unsigned char *ptr){
    //отображаем blockIdx на позицию пикселя
    int x=blockIdx.x;
    int y=blockIdx.y;
    int offset = x+y*gridDim.x;
    //вычисления значения в этой позиции
    int juliaValue=julia(x,y);
    ptr[offset*4 + 0]=255*juliaValue;
    ptr[offset*4 + 1]=0;
    ptr[offset*4 + 2]=0;
    ptr[offset*4 + 3]=255;
}
 
int main(void){
    CPUBitmap bitmap(DIM,DIM);
    unsigned char *dev_bitmap;
    cudaMalloc((void**)&dev_bitmap,bitmap.image_size() );
    dim3 grid(DIM,DIM);
    kernel<<<grid,1>>>(dev_bitmap);
    cudaMemcpy(bitmap.get_ptr(),dev_bitmap,bitmap.image_size(),cudaMemcpyDeviceToHost);
    bitmap.display_and_exit();
    cudaFree(dev_bitmap);
    
}


после компелирования выдает 4 ошибки:
1>c:/Users/ъюы*/Documents/Visual Studio 2008/Projects/julia/julia/main.cu(37): error: calling a host function("cuComplex::cuComplex") from a __device__/__global__ function("julia") is not allowed
1>c:/Users/ъюы*/Documents/Visual Studio 2008/Projects/julia/julia/main.cu(38): error: calling a host function("cuComplex::cuComplex") from a __device__/__global__ function("julia") is not allowed
1>c:/Users/ъюы*/Documents/Visual Studio 2008/Projects/julia/julia/main.cu(42): error: calling a host function("cuComplex::cuComplex") from a __device__/__global__ function("julia") is not allowed
1>c:/Users/ъюы*/Documents/Visual Studio 2008/Projects/julia/julia/main.cu(42): error: calling a host function("cuComplex::cuComplex") from a __device__/__global__ function("julia") is not allowed

с одногрупником попробовали исправить ,но наши старания успехов не принесли,помогите пожалуйста,заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2012, 18:42     Фрактал Джулия
Посмотрите здесь:

Фрактал - C++
Здравствуйте,дана была задачка. Суть её заключалась в том,чтобы написать программу генерирующую произвольный фрактал,затем переводила в...

Фрактал (множество) Жюлиа - C++
Привет всем! Достаточно срочно ищется реализация фрактала Жюлиа на с++, может есть у кого?) был бы очень благодарен

Исправить ошибку в коде, рисующую фрактал Мандельброта с помощью CUDA - C++
uint* d_image_buffer; cudaAssertSuccess(cudaMalloc(&amp;d_image_buffer, WIDTH * HEIGHT)); dim3 block_size(16, 16); dim3...

Фрактал - MathCAD
Написать программу в mathcad для DLA-модели,если зародыш фрактального кластера расположен по окружности и один в центре

Фрактал - Delphi
Построить анимационный фрактальный 3D узор на основе заданного уравнения : y=sqr(x^2-4x+3)

фрактал - C#
Напишите пожалуйста, программу на C# (фрактал), чтобы полегче был.

Фрактал - Matlab
Здравствуйте ! Подскажите пожалуйста, а точнее исправьте меня, почему у меня фрактал не вырисовывается ? Листинг: A=; B=; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.09.2012, 22:35     Фрактал Джулия #2
Цитата Сообщение от Danzel Посмотреть сообщение
C
1
cuComplex( double a, double b) : r(a), i(b) {} //конструктор
это не C
ValeryS
Модератор
6552 / 5018 / 463
Регистрация: 14.02.2011
Сообщений: 16,741
07.09.2012, 22:41     Фрактал Джулия #3
Цитата Сообщение от Danzel Посмотреть сообщение
cuComplex( double a, double b) : r(a), i(b) {} //конструктор
попробуй так
C
1
2
3
4
5
cuComplex( double a, double b)
{
 r=a;
 i=b; 
}
хотя не знаю могут ли в С быть конструкторы в структуре в плюсах точно могут
Danzel
6 / 6 / 3
Регистрация: 21.08.2012
Сообщений: 45
08.09.2012, 18:49  [ТС]     Фрактал Джулия #4
Спасибо за советы но это не помогло.

accept - я же писал в начале что это код cuda.

Я уже 3 день ломаю голову как исправить эту ошибку.
ValeryS
Модератор
6552 / 5018 / 463
Регистрация: 14.02.2011
Сообщений: 16,741
08.09.2012, 19:09     Фрактал Джулия #5
скинь сюда полный проект, покумекаем
Danzel
6 / 6 / 3
Регистрация: 21.08.2012
Сообщений: 45
09.09.2012, 17:21  [ТС]     Фрактал Джулия #6
Все я разобрался с программой,спасибо всем,но только теперь ошибка с выводом на экран,

ссылка на неразрешенный внешний символ __imp____glutCreateWindowWithExit@8 в функции "public: void __thiscall CPUBitmap::display_and_exit(void (__cdecl*)(void *))" (?display_and_exit@CPUBitmap@@QAEXP6AXPAX@Z@Z)

щас по инету полазаю ,думаю что исправлю))
monochromer
400 / 362 / 142
Регистрация: 03.01.2013
Сообщений: 954
20.05.2013, 17:34     Фрактал Джулия #7
Danzel, а в чем ошибка-то была? Поделитесь найденным решением.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2013, 22:15     Фрактал Джулия
Еще ссылки по теме:

Фрактал - Turbo Pascal
Помогите пжл. изменить программу, чтобы получился фрактал показанный на изображении. PROGRAM Zadanie_7b; Uses Crt,Graph; CONST ...

Ледяной фрактал - Delphi
Есть ли у кого программа на Delphi которая рисует &quot;Ледяной фрактал &quot;,скиньте если не сложно.

Не рисуется фрактал - Delphi
Задание: нарисовать фрактал &quot;Дракон Хартера-Кэнуэя&quot;. Вот код: unit Unit1; interface uses Windows, Messages, SysUtils,...

Фрактал Мандельброта - Turbo Pascal
Реализовать программу, строящую фрактал с заданными границами расчета X0&lt;=X&lt;=Xn; Y0&lt;=Y&lt;=Yn. Мандельброта Заранее спасибо.

3D фрактал на Шейдерах - OpenGL
Привет! Может ли кто помочь написать программу на шейдерах для C#? Нужно нарисовать 3D фрактал по формуле ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
monochromer
400 / 362 / 142
Регистрация: 03.01.2013
Сообщений: 954
09.06.2013, 22:15     Фрактал Джулия #8
Кстати, правильнее говорить не "Джулия", а фрактал Жюлиа с ударением на последний слог. Это же фамилия французского математика.
Yandex
Объявления
09.06.2013, 22:15     Фрактал Джулия
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru