|
So, I've been studying Bresenhams algorithm for drawing lines. I understand how it works, mainly because I've executed the algorithm on paper. The algorithm is quite beautiful.
However, I fail to understand why it works. Well, I kind of sort of understand, but it's more of a gut feeling than anything else. I have a book titled "Computer Graphics: Principles and Practice, Second Edition in C". It states that a line can be desribed as
1) F(x, y) = a*x + b*y + c = 0 It also says
2) dy = y1 - y0
dx = x1 - x1 and goes on to state that the slope intercept form can be written as:
3) y = dy/dx * x + B It then concludes that
4) F(x, y) = dy * x - dx * y + B * dx = 0
I understand how 1), 2), 3) and 4) fit together. What I don't understand is where 1) comes from. I don't think I've ever seen an equation describing a line that way. I am unsure what it represents. I *think* it represents all values of x and y which are on the line. Is this the case? My gut feeling tells me that F(x, y) is a union of sorts of the functions f(y) and g(x), each describing the line from both axis. I would appreciate it if someone could help me understand this mystery of mine, or give me pointers to where I can find out.
--
LOADING...
|
|
|
|
|
Hi,
ax+by+c=0 and y=dx+e are both formulas describing (all points belonging to) a straight line.
The former is fully symmetrical in x and y.
For both, you can introduce a new independent variable t, and then express both x and y as
a function of t, e.g.
x(t) = alpha * t + beta
y(t) = gamma * t + delta
this may make it easier to traverse the line: simply let t move from t0 to t1 (t0 and t1
corresponding to the known points (x0,y0) and (x1,y1).
Greetings,
Luc Pattyn
|
|
|
|
|
Heh. if ax + by + c = 0, then y = (ax + c) / b, right? Hum.. could it be that easy? Talk about not seeing the forrest for all the trees.
--
Not Y3K Compliant
|
|
|
|
|
y = ax + b ⇒ y = dx + e (change of letters) ⇒ y - dx - e = 0 ⇒ ax + by + c = 0. The last is the definition of any function in n variable (F(a1, ..., an) = 0.
"I know which side I want to win regardless of how many wrongs they have to commit to achieve it." - Stan Shannon
Web - Blog - RSS - Math - LinkedIn - BM
|
|
|
|
|
|
The equation for a line that you're probably familiar with is
5) y = mx + b where m is the slope and b is the Y-intercept. You can get from 1) to 5) with algebra:
ax + by + c = 0
ax/b + y + c/b = 0 [divide both sides by b]
y = -ax/b - c/b [subtract the same term from both sides]
y = Mx + B [substitute M = -a/b, B = -c/b] You can prove that B = -c/b is the Y-intercept by evaluating 1) for x=0.
|
|
|
|
|
i want to see code for Nearest neighbour algorithm
-for example
if i have 3 classes each one have X1 .X2,X3
and i have afile contain 100 pattren i choose 50 raqndomly to know in witch class
If I HaD OnE sInglE wIsh IwIll gO back for thE fIrst tIme i sEE yOu
|
|
|
|
|
Could you please explain this a bit more ?
|
|
|
|
|
i want an example of how this algorithm can be implement
in c#
If I HaD OnE sInglE wIsh IwIll gO back for thE fIrst tIme i sEE yOu
|
|
|
|
|
can somebody give me the source code of this problem (TSP travelling salesman problem) in java ?? or somewhere similar ???
please ???
|
|
|
|
|
I SHOULD NOT reply because I'm SO BAD at Math.. but I had to!
I found one Open Source program.. There are MANY out on the NET.
http://sourceforge.net/projects/jcconvenant
I only responded to this because this is the only Math subject I ever got a 'A' in.. I had the C# code I used for the grade but I cannot find it. (You would be more than welcome to it BUT.. I'm affraid it's lost) It has been been awhile since it was made. Sorry! As I remember it took me forever to get it right.
If it helps, I found a book at the time which 'at least made me understand the subject'
Algorithms In C, Third addition, Graphic algorithms, Part 5, by Robert Sedgewick, Addison-Wesley
|
|
|
|
|
Just me at will_george...something wrote: Algorithms In C, Third addition, Graphic algorithms, Part 5, by Robert Sedgewick, Addison-Wesley
Excellent choice. There are C++ versions available as well, with parts 1-4 (in a single volume), and part 5.
Steve S
Developer for hire
|
|
|
|
|
There are C++ versions available as well.. That is what I have! I really did not fing <<< (I thought I typed FIND) it hard to translate it to C# Well, the graphic part was a bit of a problem though. I only mentioned this book because I'm sort of stupid at math (but I love to try!) and this book at least made me think I knew what I was doing!
|
|
|
|
|
Hi, iam the mathematics person.can anyone give me the problem so i can sure help on it.
please give me the problem then i will think on it.
mehata sheetal
|
|
|
|
|
Hi, iam the mathematics person.can anyone give me the problem so i can sure help on it. please give me the problem then i will think on it......
Hi, I'm the mathematics person. Can anyone give me a problem? I'm sure I can help you with it.
I changed some of the English... LOL.. Not that I am a expert on it. I have been doing it for only 65+ years. I still get it all wrong!
Really! There is NO HATE HERE toward anybody.. I just thought it was funny from my point of view. I have a strange mind and had a good laugh. Good way to start a day. Thank You!
By the way, I know no other language except my Chicago style English. I'm in wonder of people that speak or write in other languages! Amazing! I have a 'TIN' ear and cannot get the 'words' spoken in my brain.
I'm about as poor at Math as my English!
Anyway... My question, which I'm sure is stupid. (I have no shame so I'll ask it anyway.)
I hope I can explain what I am thinking of....
Using Trig in a C# program or other (I mention C# because it is what I usually use now) I see strange results on what I try to do. (I would assume it is me) BUT I had this thought in my little old brain. The way I see it, Trig. is based on a true circle. However when I make a picturebox, panel or other it is always some sort of square or rectangle with my bitmap or Draw object within it. (Does Microsoft have a true circle Control?) If I want a theta, I 'think' it is sort of based on the mouse/joystick input from the picturebox/panel/whatever which is a square/rectangle..
What am I missing? I'm lost.
Bless YOU!
|
|
|
|
|
HI,
i m transportation engg. M.tech student. i want to learn matlab. how to start it from the begining????
i want to solve genetic algorithm for my project work. is matlab will be simple or c programme???????
REPLY ME
HAVE A NICE DAY
|
|
|
|
|
|
|
leckey wrote: Nuff said.
Yeppers.
|
|
|
|
|
not doing their own homework..
I sort of agree BUT in my math classes (which I take just because I love frustration) I have used comments/code from 'other' sources that got me a reasonable grade.. Sometimes FAILED using it! BUT it gave me insight to things I never knew before. Nuff Said.
-- modified at 8:51 Wednesday 8th November, 2006
I'm adding this because I'm old and hit the Post Message Button before I was finished.
I wanted to say that I can do almost anything with my hands without hardly thinking except draw/paint. My Mom can paint anything.. All I get is a blob!
Must be the Math in drawing objects! One time I carved a almost perfect Elephant in wood that everybody I know just LOVES it.. I have no idea how I did it.. I carved while watching Twilight Zone or something..
Not everybody that asks a question is asking for homework for you to do.. Well, maybe AOT but what does that matter? Their 'homework' will work out in the end when they cannot do the job.. BUT.... maybe somebody out there will become a Great Enginner or Banker keeping 'the books' on YOUR bank account!
|
|
|
|
|
I have a general question about de-allocating memory for large data structures.
If you have any large data structure, say a tree with many nodes, your destructor (assuming you're working in C++) would have to traverse each node to destroy it, right? Essentially, your destructor is an O(n) operation, where n is the number of nodes in the data structure. Makes sense so far, right?
Maybe I'm horribly naive, but this seems like a very slow way to destroy a data structure. When you close a large document, like a Photoshop document, the document appears to close and release memory quickly. How are the large data structures that make up the document destroyed so quickly? Is it typical for a destructor to traverse each node, or am I missing some well-known practice to get around this?
Thanks,
Steve
|
|
|
|
|
there are several ways, one of which is to control your own allocation. You allocate a large block, then divvy it up into smaller pieces that are passed as allocated blocks to nodes, then you can deallocate by the large block if necessary and then everything is gone. Photoshop, in pre 5.0 versions often did not release memory, once allocated it gets thrown on a reuse heap internally. Another way is simply to store pointers to all allocated blocks in a list, then it is a linear release, no traversals for a delete all.
There are papers on internal garbage collection routines and efficient process operations related to almost any subject, including memory allocation.
_________________________
Asu no koto o ieba, tenjo de nezumi ga warau.
Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb)
|
|
|
|
|
Indeed. If you're working with C++ classes, then you can provide class specific new and delete operators (for single objects and arrays). This means that in a Win32 environment you can hit the VMM directly (VirtualAlloc/VirtualFree) if it's appropriate, to do whatever you want.
Just carried out such an exercise on a server app (along with reshaping the internal data representation) and it was worth it - as reported by profiling the app with 'typical' and 'degenerate' loading.
Steve S
Developer for hire
|
|
|
|
|
Not sure this[^] is legal, but it led me to this[^] which seems interesting. The former link is also mentioned in the latter. So it might be.
"I know which side I want to win regardless of how many wrongs they have to commit to achieve it." - Stan Shannon
Web - Blog - RSS - Math - LinkedIn
|
|
|
|
|
Good find.
It always takes me an age to translate something from the book into CS, this is a real time saver!
|
|
|
|