|
if you actually meant 5 out of 6 times for the first example...
if (rand(val1+val2) > va1)
choose val2
else choose val1
--
Rules of thumb should not be taken for the whole hand.
|
|
|
|
|
Thanks for the quick response, but if the values are 10 and 50 then: 10 + 50 = 60. And 60 will be chosen more often than 10, and I want the lower value chosen more often. Of course, in this case I could do the opposite. if > val1 then choose val1. I'll experiment with this a bit.
Thanks
|
|
|
|
|
Thanks,
Simply chosing the opposite worked:
<br />
class Class3<br />
{<br />
static void Main(string[] args)<br />
{<br />
Random rand = new Random();<br />
<br />
int cnt1 = 0, cnt2 = 0;<br />
double val1 = 20.223, val2 = 37.882;<br />
int tot = Convert.ToInt32(val1 + val2);<br />
<br />
for (int i = 0; i < 10000; i++)<br />
{<br />
if (rand.Next(tot) > val1)<br />
cnt1++;<br />
else<br />
cnt2++;<br />
}<br />
<br />
Console.WriteLine("Total: " + tot);<br />
Console.WriteLine("Val1 ({0}): {1}", val1, cnt1);<br />
Console.WriteLine("Val2 ({0}): {1}", val2, cnt2);<br />
}<br />
}<br />
The output is consitent no matter which values I choose, the lower value is chosen more than the higher value by a ratio that matches the ratio which matches the values themselves. I'm going to try this next with my AVL tree and watch those results. After this testing I think already I have the answer to my next problem and that was going to be with selecting a random value at each node. But I figure I can get the random value once at the top and use the same result all the way down the tree. I'll try it each way and see which method has better distribution.
Thanks again,
Mark
|
|
|
|
|
|
I'm eating 4.52*pi/6 in3 apple pie for pi day...
----
...the wind blows over it and it is gone, and its place remembers it no more...
|
|
|
|
|
Mmm... apple pie I think I will have to get some pie with my lunch today.
--
Marcus Kwok
|
|
|
|
|
pizza pi for lunch today. Might get some of the other kind for dinner.
--
Rules of thumb should not be taken for the whole hand.
|
|
|
|
|
hi,ashee here.implementing face recognition Algorithm in MATLAB namely PCA and LDA.can anyone please help me.
|
|
|
|
|
Hi, i am making a Windows Media Player Visualization and i need some help with an algorithm.
I am making a snake like curve that moves around the screen. It uses 3 point bezier curves joined together to form one long curve. The head continually grows while the end disappears. I need to make each new one connect to the old head but my code doesn't work. Here is some of the code:
typedef struct tagBezier{
float x, y;
POINTF P0, P1, P2;
float t, t2;
} Bezier;
void CViz3D::calculateBezier(Bezier& b, float time) {
b.t2 = b.t; b.t = time;
b.x = (pow(b.P0.x*(1 - b.t),2) + b.P1.x*2*b.t*(1 - b.t) + pow(b.P2.x*b.t,2));
b.y = (pow(b.P0.y*(1 - b.t),2) + b.P1.y*2*b.t*(1 - b.t) + pow(b.P2.y*b.t,2));
}
void CViz3D::drawBezierCurve(Bezier b[CURVES]) {
float iStart = 0, iEnd = 1;
if (b[start].t < b[start].t2) {
int sOld = start;
start = (start+1)%CURVES;
end = (end+1)%CURVES;
float distX=b[sOld].P2.x-b[sOld].P1.x, distY=b[sOld].P2.y-b[sOld].P1.y;
b[start].P0.x = b[sOld].P2.x; b[start].P0.y = b[sOld].P2.y;
b[start].P1.x = b[sOld].P2.x+distX; b[start].P1.x = b[sOld].P2.y+distY;
b[start].P2.x = (RAND-0.5f); b[start].P2.y = (RAND-0.5f);
}
for (int j = 0; j < CURVES; j++) {
if (j == start) { iStart = 0; iEnd = bezTime; }
else if (j == end){ iStart = bezTime; iEnd = 1; }
else { iStart = 0; iEnd = 1; }
glBegin(GL_LINE_STRIP);
for (float i = iStart; i < iEnd; i += 0.01f) {
calculateBezier(b[j], i);
glVertex2f(b[j].x, b[j].y);
}
glEnd();
}
}
Can someone figure out what's going on.
Thanx
|
|
|
|
|
Hi, may I suggest you expand on "does not work" before you expect anyone to dig in ?
Does it compile ? run ? behave for a while ? then what ?
|
|
|
|
|
Sorry i should have mentioned, the curves don't match up. That is, when a new curve is made it should smoothly match up with the one before it. Here is an image that explains it. I can't be bothered posting an image of the actual result but basically point B2 seems to be at any random spot instead of being in line with A2.
http://img89.imageshack.us/img89/318/bezierlt5.png
|
|
|
|
|
Hi,
some remarks:
1. you managed to confuse yourself and me by using different numbering in code and drawing;
2. your code makes two distances equal: A3-A2 = B2-B1 in drawing's notation, although
drawing's annotation says otherwise.
3. you are aware I trust that RAND is called twice and will return two different numbers;
this yields independent x and y for B3 (is OK).
4. but I would make the distance B3-B2 random, so I prefer something like:
b[start].P2.x = b[start].P1.x+maxStepX*(RAND-0.5f);
b[start].P2.y = b[start].P1.y+maxStepY*(RAND-0.5f);
with maxStepX and maxStepY some reasonable constants (maybe equal).
Hope this helps.
|
|
|
|
|
"1. you managed to confuse yourself and me by using different numbering in code and drawing"
yeah, sorry about that. I draw the picture before i wrote the code, to give me an idea of what to do... that didn't help
"2. your code makes two distances equal:..."
yes, i changed that to make it easier to code
"4. but I would make the distance B3-B2 random..."
isn't that basically the same as what i did, except i picked random points.
Thanks for your help. But my problem it that B2 isn't lined up with A2 and i don't know why?
|
|
|
|
|
Hi,
I looked at your code again and discovered you are squaring the coordinates !?!?
b.P0.x and the like should not be inside pow(...,2) !
Also I would suggest to keep the bezier curves large enough, i.e. I hope you are
not trying to draw a bezier that only spans a few pixels (would waste CPU cycles
and might be off due to quantization effects).
|
|
|
|
|
Thanks for that. I never would have found that out. I got the formula for Bezier curves off the internet and coded it in C++ but i didn't keep the original formula so i just assumed i copied it right.
Thanks again.
|
|
|
|
|
You're welcome.
When in doubt about some formula, I check the edge conditions, in your case the
Bezier must yield P0 and P2 for the special values t=0 and t=1.
Furthermore, squaring a physical thing (such as a coordinate) does not
occur often.
Best regards,
|
|
|
|
|
There is still just one little problem. Sometimes the curves don't go from one to the other and stay there. That is, one curve keeps repeating over and over as if if (b[start].t < b[start].t2) doesn't evaluate to true???
Here is a link to download the viz so you can see for yourself. http://www.savefile.com/files/550244[^]
Read the readme, it tells you how to install it. If you can't get it to install tell me and i'll post some pics instead.
|
|
|
|
|
I've been interested in making a 2D side-view platformer. I've been experimenting with video footage of an actor, and how to process that footage down to useable game sprites.
Image: http://www.18giants.com/example1.jpg
As you can see, seperating the figure from the background (in code) is a real challenge. Her arms are especially close to the color of the wall behind her.
I've tried keying on r,g,b, on chroma, on hue, on saturation, and several combinations thereof. I tried keying on frame-to-frame changes. I tried getting a reference frame (without her in the shot) and keying off the differences. I also tried counting the colors, sorting them by a two-color cutout of the figure, and applying the results back to each frame.
Nothing's really working, especially on the arms.
I KNOW I'm supposed to spring for a green stage and all that, or just get an artist to hand-process every frame, but I wanted to find a cheap, software solution if I could.
Do you know of anybody doing this kind of thing? Have you heard about an algorythm I haven't tried yet?
Thanks!
|
|
|
|
|
How i solved that stuff normally is that i think of every element of the person as a different layer that i need. So i end up with multiple movies , one wih the legs , the other with the head , and a oher with ..Then i impose them ontop of each other. You can do basic pos effects in Adobe Premiere , but if you have to go more hardcore,try After Effects. A hint with after effecs : You can nest projects in projects. So tweaking of one colourkey in a layer will show you a nice result in all those nested colour key layers together.
|
|
|
|
|
I think the answer you received does not address your question. At least I got it diferent. I assume you want to record an actor and then remove the background so that you can use the frames of the actor over the background of a game. The tricky part is that you don't want to spend a lot of money on a "green" background (which would be easilly removed, of course). Is this right?
If I got it right then I can imagine a number of solutions and also many details that should be observed (depending on the final quality you intend to achieve).
The easiest solution I can think of is dressing the actor in colors, instead of using a green background. From the image you posted I would sugest:
1) Paint her face light blue (this paint should not be too expensive).
2) Leave the hair black.
3) Paint the arms green (or dress them in a tight green bluse and gloves).
4) Wear a red sleavless shirt.
5) Wear blue pants.
6) Wear green shoes (or socks, I can't see the details very well).
(this is for the given image only, other images may sugest a diferent colour scheme)
Then it will be easier to remove the background against the actor's colors. Simply learn the background and subtract. Well, it is not as easy if you get a lot of noise (if you do then reply to this message for techniques how to remove noise). When you have removed the background then you just replace the actor's colours by software. All shadows should be valid and accurate after this and you get your actor isolated.
Then, for realism and credibility, you should use an alpha channel (for transparency) for the sprite drawing (during the game). Make at least one alpha pixel in contour. If you have a typical color for background then reply to this message for techniques on how to recompute the best contour.
I hope this helps,
Rilhas
|
|
|
|
|
Does anyone know of a good pic compiler with source code that's not licensed under GPL?
Thanks
|
|
|
|
|
For C/C++ or assembly? What PIC family?
|
|
|
|
|
Rilhas wrote: For C/C++ or assembly?
C/C++
Rilhas wrote: What PIC family?
PIC18F8722
|
|
|
|
|
Well, for C with the PIC18 family I would sugest The MPLAB C18 Compiler. I don't think it is GPL, because it is a comercial product sold by MICROCHIP. I consider it to be moderately priced (around 350 EUR), and I've used it and it is good. It has some bugs, but very easy to find and work around. You can find it at http://www.microchipdirect.com/productsearch.aspx?Keywords=SW006011[^].
This is not a C++ compiler. For that I don't know any products from personal experience.
I hope this helps,
Rilhas
|
|
|
|
|
I was looking for an alternative to microchip that I can build into a personal project. Being commercial, microchip doesn't lend itself well to that objective.
|
|
|
|