|
Hey Friends
I want to Draw Arc/Pie/Circle without using MFC methode...
I neeed proper algorithm to draw these object using SetPixel.
plz help me.//
|
|
|
|
|
This sounds like homework, did you try typing "circle drawing algorithm" into google before asking here?
Peter
"Until the invention of the computer, the machine gun was the device that enabled humans to make the most mistakes in the smallest amount of time."
|
|
|
|
|
No my dear friend "cp9876"
these methodes are not supported in WinCE and i want to Draw Arc/pie/circle in WinCE....
So i need that Algo.
|
|
|
|
|
I think WinCE Version 3 supports them, or do you have to be compatible with previous versions
http://msdn2.microsoft.com/en-us/library/ms902019.aspx[^]
If you google on "circle drawing algorithms c++" you seem to get lots of samples, but I guess you must have done that.
You also continually cross-post.
Peter
"Until the invention of the computer, the machine gun was the device that enabled humans to make the most mistakes in the smallest amount of time."
|
|
|
|
|
himuskanhere wrote: So i need that Algo.
sin() and cos()
_________________________
Asu no koto o ieba, tenjo de nezumi ga warau.
Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb)
|
|
|
|
|
El Corazon wrote: sin() and cos()
that would be very expensive.
Bresenham draws lines and circles.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/...
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
Luc Pattyn wrote: Bresenham draws lines and circles.
Naturally, but I find Xiaolin Wu cancels out Breshenham, don't you?
Unless, the enemy has studied his EG reports[^], which I have. (all apologies to William Goldman)
he asked for an algorithm, I gave one. I could have given a dozen more.
_________________________
Asu no koto o ieba, tenjo de nezumi ga warau.
Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb)
|
|
|
|
|
Bresenham[^] shows the way.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/...
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
|
Hello,
I have a problem in visualization my data. I have some values which I need to represent on the color scale. I wrote some code where I can visualize my datas but only on a range of one color (Red,Green or Blue). I am looking for some algorithm to display the data on a full color spectrum in RGB.
Thank you, TB
|
|
|
|
|
Hi,
you may want to have a look at this article.[^]
What you could do is work in HSL space, possibly set S and L at maximum and use
hue as the variable, resulting in a range of colors akin to a rainbow.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/...
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
Tomas(cz) wrote: I am looking for some algorithm to display the data on a full color spectrum in RGB.
color cube! HxWxD==RGB
I do a lot of color visualization recently for the RF spectrum, personally I find it is more important to start with what you need to get out of the display. This lets you adjust the visualization method to match the desired output to make sure you have success. Rendering the data isn't always the goal, often the goal is getting something out of the rendered image, if the choice in visualization hides what you are looking for, it is time to find a new rendering method.
_________________________
Asu no koto o ieba, tenjo de nezumi ga warau.
Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb)
|
|
|
|
|
think also to the possibility to prepare a simple colormap (256 RGB values can be enough) and then plot your data in that domain.
Russell
|
|
|
|
|
Okay here's one you may not have heard of before:
I need an algorithm that selects a random number. But I want to make it so that the user can choose an approximate "Peak" that will increase the likelihood of numbers around that area to be chosen.
In other words, if the range is between 1 and 100, and the user selects 33, I want the probability of selecting numbers around 33 to be increased. I've been pondering this for a while now and I haven't come up with anything practical. I still want all numbers to be potentially hit, but I want the frequency of numbers around the target to be hit more.
Any suggestions? Please answer in pseudocode. It would help me out a lot.
"Go to, I’ll no more on’t; it hath made me mad." - Hamlet
|
|
|
|
|
It all depends on what sort of distribution you want.
You could easily generate a Gaussian random variable with mean M and standard deviation S, these would be clustered around M, and simply try again if the sample you generate lies outside the range 1:100. There usual way to generate a Gaussian RV from a uniform RV is to use the Box-Muller transform, see http://en.wikipedia.org/wiki/Box-Muller_transform[^]
Alternatively, you could generate a triangular type distribution, for example generate two RV's x and y, each uniformly spread in 1:50, then use x+y as your random variable. This will be spread over the range from 2:100 (you can fix it to go to 1), but there is a much higher chance of getting numbers around 50 than 2 or 100. You could simply rotate the result to put the peak wherever you want. e.g. to move the peak to 33, z = (x+y+83)%100
There are lots of other possibilities, it all depends on the probability distribution you want.
Peter
"Until the invention of the computer, the machine gun was the device that enabled humans to make the most mistakes in the smallest amount of time."
|
|
|
|
|
Here's one method I just thought of:
Plinko algorithm:
<code>
Private function SelRand(target as integer, _
lbound as integer, ubound as integer) as integer
dim n as integer
dim i as integer
dim x as integer
dim loops as integer
n = target
if abs(n-ubound) > abs(n-lbound) then
loops = abs(n-ubound)
else
loops = abs(n-lbound)
end if
for i = 0 to loops
x = int(rnd * 3)
Select Case x
Case 0: if n > lbound then n = n - 1
Case 1: if n < ubound then n = n + 1
case 2: ' drop down to same number
End Select
Next i
SelRand = n
End Function
</code>
So basically by the law of averages the target number and its neighbors will be hit more often, but there's still a possibility of all numbers being selected.
Can you think of any optimizations to this method? Any other ways to do this?
"Go to, I’ll no more on’t; it hath made me mad." - Hamlet
-- modified at 12:39 Thursday 30th August, 2007
|
|
|
|
|
I implemented this plinko algorithm and it works fine for what I need it to do. Thanks for your help, guys.
"Go to, I’ll no more on’t; it hath made me mad." - Hamlet
|
|
|
|
|
Hi,
if you want an integer number j in the range [min, max) where each possible
value j has a different probability, you could:
- define an array P[j] that holds the relative probability (we use integers,
i.e. the absolute probability multiplied by N, the sum of all P[j])
- use a random number generator to obtain a number k in the range [0, N)
- find the value of j for which SUM(P(j)<=k<sum(p(j+1))
where="" sum="" is="" taken="" over="" [min,="" j).
btw:="" the="" notation="" [a,b)="" means="" range="" from="" a="" up="" to="" b,="" including="" a,="" excluding="" b.
the="" final="" transformation="" k--="">j can be speeded up by:
- storing SUM(P(j)) for all j
- and even, if N is not too large, using an array of size N
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/...
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
Neat idea Luc, to phrase it in a slightly different way, take the interval (0,1) and split it into N subintervals defined by {0, x1, x2, .., xN-2, 1}, the length of each nth subinterval is the assigned probability to the nth event. Then use a uniform RV in the interval (0,1) and choose event n if the RV lands in the nth subinterval. You can easily find the subinterval in O(log2(N)).
Of course this only works for discrete events, but reading between the lines this is probably what the OP wanted.
Peter
"Until the invention of the computer, the machine gun was the device that enabled humans to make the most mistakes in the smallest amount of time."
|
|
|
|
|
that's what engineers like to do: linearize the world as much as possible.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/...
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
cp9876 wrote: only works for discrete events
Not so sure, the words would change, it would become an integral rather than a
sum, and the optimizations would have to be revisited of course, but the basic
idea could still work.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/...
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
I only have a very vague idea of what you're talking about, not being an engineer or mathmetician myself, but from what I gather, you're suggesting a similar idea to the one I was thinking of on my own: building a pyramid of probabilities from the peak target down to all values at the base, and then selecting values based on that.
"Go to, I’ll no more on’t; it hath made me mad." - Hamlet
|
|
|
|
|
The differences between the ideas presented is the probability distribution function that results - this means the probability of each number occurring. If you have 100 numbers, the pdf is simply the probability of each occurring p1, p2 ,..p100. These must sum to 1.
My post suggested generating them with a normal distribution (bell curve), so if you were to plot the p's you would see a bell-shaped curve. The other suggestion, generating two uniform RVs in the range 1..50 and adding them would give a triangular shape if you plotted the p's.
The clever thing about Luc's post is that he can arbitrarily specify the pdf. He can do the triangular one, or have 3 peaks, two valleys and a plateau! Just by specifying the probabilities the same algorithm will generate the numbers.
I suspect that your algorithm would also give a triangular shaped plot, but with clustering around the endpoint that you were closer to (due to the way you stay in range), and dropping away around the more distant endpoint. You could easily run a large number of samples and plot the histogram to see.
Depending on the application the pdf may be very important or not. If you are generating random numbers to simulate the noise in a communications system for example, the large ones cause the errors and it is important that these are generated at the right rate relative to the others.
Peter
"Until the invention of the computer, the machine gun was the device that enabled humans to make the most mistakes in the smallest amount of time."
|
|
|
|
|
Hi,
I need to generate random points inside of rectangle. But I need to have a certain distance between neighboring points. My input is rectangle and interval of distances <d1, d2="">. When I have a point P1, distance between P1 and any of closest points must be from <d1, d2="">. Is there any effective algorithm to do that?
noIdea
|
|
|
|
|
I don't understand your question. Are you saying that you need to generate random points located on a rectangular grid? If so, the co-ordinates are simply (nx*dx, ny*dy) where dx,dy are the grid spacings and nx and ny are integers. Simply generate random integers nx and ny.
Alternatively, if the points can be randomly located, but each extra one must be >d from each other, then I can't think of a better way than generating them randomly and rejecting each new one if it is too close to the existing ones. You could speed up the searching by storing the generated points in some sort of grid pattern.
Peter
"Until the invention of the computer, the machine gun was the device that enabled humans to make the most mistakes in the smallest amount of time."
|
|
|
|
|