|
Increasing the resolution of the range should do it.
/ravi
Let's put "civil" back in "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Hi,
I am trying to write a simple Mandelbrot set Visual C++ program.
I assume that I am not handeling the setting the color of a pixel
correctly.
Here's some of my code ...
<br />
...<br />
void CMand_View::OnDraw(CDC* pDC)<br />
{<br />
...<br />
for( int i=0; i<320; i++ ) {<br />
for( int j=0; j<200; j++ ) {<br />
int c = CMand_View::Mandel_calcColor( i, j );<br />
pDC->SetPixel(i,j, PALETTEINDEX(c));<br />
}<br />
}<br />
}<br />
...<br />
double CManel_View::Mandel_Abs ( double real, double img ) {<br />
double rc = real * real + img * img;<br />
return sqrt( rc );<br />
}<br />
<br />
int CMand_View::Mandel_calcColor( int X, int Y ) {<br />
<br />
int N;
double XPos, YPos;
double RealPart;
double ImagPart;
int AbsZ;
double Temp;<br />
<br />
double width = 320.0;<br />
double height = 200.0;<br />
<br />
N = 0;<br />
AbsZ = TRUE;<br />
RealPart = 0;<br />
ImagPart = 0;<br />
XPos = X / width * (XMax - XMin) + XMin;<br />
YPos = Y / height * (YMax - YMin) + YMin;<br />
<br />
while ( (N < Iterations) && (AbsZ == TRUE) ) {<br />
N++;<br />
Temp = (RealPart*RealPart) - (ImagPart*ImagPart) + XPos;<br />
ImagPart = 2.0 * ImagPart * RealPart + YPos;<br />
RealPart = Temp;<br />
AbsZ = (( CMand_View::Mandel_Abs (ImagPart, RealPart) <= Bailout) ? TRUE : FALSE);<br />
}
<br />
if (AbsZ == 0 ) {<br />
return (N + sColor) % Colors;<br />
} else {<br />
return 0;<br />
}<br />
}
<br />
I think that this ...
<br />
pDC->SetPixel(i,j, PALETTEINDEX(c));<br />
... is not right.
|
|
|
|
|
Are you using 256 colours ? Try it in a higher res. The last paremeter as an RGB value ( as returned by the RGB macro ) will work. It will be slow though. A DIBSection would give you a pixel array to set directly instead.
Christian
No offense, but I don't really want to encourage the creation of another VB developer.
- Larry Antram 22 Oct 2002
C# will attract all comers, where VB is for IT Journalists and managers - Michael
P Butler 05-12-2002
Again, you can screw up a C/C++ program just as easily as a VB program. OK, maybe not
as easily, but it's certainly doable. - Jamie Nordmeyer - 15-Nov-2002
|
|
|
|
|
Hi Christian,
Yes I want to use 256 colors.
How could I use the RGB macro when
<br />
int CMand_View::Mandel_calcColor( int X, int Y ) <br />
returns an int and not 3 ints?
Should I some how derieve the 3 ints (r, g, b) from c?
Where c = CMand_View::Mandel_calcColor( X, Y );
|
|
|
|
|
It looks like you're header for 24 bit colour and Chris has sorted it all out for you. Good luck !!!
Christian
No offense, but I don't really want to encourage the creation of another VB developer.
- Larry Antram 22 Oct 2002
C# will attract all comers, where VB is for IT Journalists and managers - Michael
P Butler 05-12-2002
Again, you can screw up a C/C++ program just as easily as a VB program. OK, maybe not
as easily, but it's certainly doable. - Jamie Nordmeyer - 15-Nov-2002
|
|
|
|
|
|
That's a good question!
How do I use a palette?
I thought just using the marco ...
<br />
PALETTEINDEX(c));<br />
... would handle all that for me
Something is going on as my program shows
the mandelbrot set all in green!
|
|
|
|
|
the simplest way is to just come up with an array of COLORREF values:
COLORREF pal[MAXITERATIONS];
pal[0] = RGB(0,0,0);
pal[1] = RGB(64,64,0);
pal[2] = RGB(128,128,0);
...etc
then, in your loop, just use "pal[c]" instead of that PALETTEINDEX macro.
an 8-bit display is pretty rare these days. you might as well just aim for 24-bit color.
-c
Please stand by
|
|
|
|
|
How should I set pal[3] through pal[255]?
Am I using a 8-bit display?
How do I use a 24-bit color?
|
|
|
|
|
rbc wrote:
How should I set pal[3] through pal[255]?
pick a set of colors that looks good. in my opinion: 1. fractals work best when the palette fades between two or three colors and 2. generating the palette is as important as picking the right region to render: http://www.smalleranimals.com/thumbfrax/thumbs/_index.htm[^]
rbc wrote:
Am I using a 8-bit display?
i don't know.
rbc wrote:
How do I use a 24-bit color?
don't do anything. just render the pixels by using their COLORREF values.
-c
Please stand by
|
|
|
|
|
Cool web page. You are obviously no stranger to generating
fractals! Yet I am. How would you write a mandelbrot program
in Visual C++?
|
|
|
|
|
rbc wrote:
How would you write a mandelbrot program
in Visual C++?
i would start by doing exactly what you're doing just to get a feel for how things work. then i would add controls to move around (zoom in/out, pan, etc.). then i would add palette creation UI (no idea what i'd do for that). then i'd add a bunch of other fractal types.
a tiny mandelbrot program[^]
#include "stdio.h"
main()
{
int b=0,c=0,q=60,_=q;for(float i=-20,o,O=0,l=0,j,p;j=O*O,p=l*l,
(!_--|(j+p>4)?fputc(b?q+(_/3):10,(i+=!b,p=j=O=l=0,c++,stdout)),
_=q:l=2*O*l+i/20,O=j-p+o),b=c%q,c<2400;o=-2+b*.05);
}
-c
Please stand by
|
|
|
|
|
|
I need to program a code in which I have to return the execution time of a function in lowest time unit possible(like in millisec. or even lower) by the operating system. Can someone tell me what library call I can use in WindowsXp environment.
Thanks
Matthew
|
|
|
|
|
::time is a C runtime function, declared in ctime, which should do what you want. Look up time_t in MSDN.
Christian
No offense, but I don't really want to encourage the creation of another VB developer.
- Larry Antram 22 Oct 2002
C# will attract all comers, where VB is for IT Journalists and managers - Michael
P Butler 05-12-2002
Again, you can screw up a C/C++ program just as easily as a VB program. OK, maybe not
as easily, but it's certainly doable. - Jamie Nordmeyer - 15-Nov-2002
|
|
|
|
|
|
|
I had this problem a while back, mainly on the file fate/time in differnt time zones with daylight saving time, try this:-
// Allow for daylight saving, file dtm is the GMT value not BST
ntimeBias = 0;
if((dwError = GetTimeZoneInformation(&timeZoneInfo)) != TIME_ZONE_ID_UNKNOWN)
{
if(dwError == TIME_ZONE_ID_DAYLIGHT && !bFAT)
ntimeBias = timeZoneInfo.DaylightBias;
}
// Plus the bias from GMT
ntimeBias += timeZoneInfo.Bias;
modifiedTime = m_OleLastTime + COleDateTimeSpan(0, 0, ntimeBias, 0);
|
|
|
|
|
Sorry missed this!
bFat was just to check it it was a FAT drive as the file times were allegedly stored differently, you probably won't want this.
|
|
|
|
|
|
I see what you mean, apart from maintianing your own list I can't see a solution
Have a look at MSDN ID: Q221542
Unless there is something like _tsetlocale, which sets the time and not just the locale.
Happy hunting!
|
|
|
|
|
If no-one answered your post the first time, posting again twenty minutes is unlikely to help (although, of course, in this particular case... )
This first error is the one you want to look at. All the others are caused by it as well. You need to find which header file CDate is defined in and #include it.
Although a quick scan of the MSDN seems to indicate that there's no such class - did you just make it up?
he he he. I like it in the kitchen! - Marc Clifton (on taking the heat when being flamed)
Awasu v0.4a[^]: A free RSS reader with support for Code Project.
|
|
|
|
|
First of all, every request is urgent to the person asking. It helps if instead you say what it's about.
Once your compiler finds a problem, it is confused and will probably find many more which really relate back to the first one. So don't worry about the big list.
Basically, your compiler does not know what a CDate is. To tell it, you need to include the header that declares it. I searched MSDN for CDate in MFC and it could not find it. Unless MSDN is not working in this case ( very possible ) MFC does not define a CDate class, and the standard sure doesn't. Where did you get the code you're using from ?
Christian
No offense, but I don't really want to encourage the creation of another VB developer.
- Larry Antram 22 Oct 2002
C# will attract all comers, where VB is for IT Journalists and managers - Michael
P Butler 05-12-2002
Again, you can screw up a C/C++ program just as easily as a VB program. OK, maybe not
as easily, but it's certainly doable. - Jamie Nordmeyer - 15-Nov-2002
|
|
|
|
|
hi,
make sure u r including afx.h and instead of CDate (What is that?) use CTime.
a bit of suggestion
try using COleDateTime instead of CTime (Include afxdisp.h). the implementation of this class is similiar to CTime but it offers u a wide range of dates.
regards
rishabhs
|
|
|
|
|
Check if m_sDate is in the scope from where you are trying to access(have you declared it somewhere ?) , the second error is because of the first one.
Cheers
Kannan
|
|
|
|