472,333 Members | 2,609 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,333 software developers and data experts.

Circle Hell

Hi all,

I am new to Tk, so please bear with me. I need someone better at math
than me to help me figure this out. I am drawing multiple arcs on the
same circle. All arcs start at 90 and have varying negative extents
(different colors, goes all the way around. Represents a microbial
genome). So now that my arcs are drawn, I would would like to draw a
line, 25 pixels long that starts on the circle at the endpoint of each
of the arcs, and looks like an extension of the radius extending above
the circle. Then I would like to print text at the end of this line. So
my question is how do I dynamically calculate the line coordinates?
Circle size is fixed, number of arcs and their extents are variable.

Code for drawing arc;
$x1,$y1 = 25
$x2,$y2 = 775
$xcenter = $x2/2 + $x1;
$ycenter = $y2/2 + $y1;

$canvas->createArc($x1,$y1,$x2,$y2,
-width=>10,
-outline=>$colors[$color],
-style=>'arc',
-start=>90,
-extent=>-$actual_angle,
-tags=>$myorfs{$key}[1]);

What I have so far to draw lines:

$xstart = (cos($current_arclength)*$radius+$xcenter) /10;
$ystart = (sin($current_arclength)*$radius+$ycenter) /10;
$canvas->createLine($xstart+$xcenter,
$ystart+$ycenter,
$xstart+($xstart*0.01)+$xcenter,
$ystart+($ystart*0.01)+$ycenter);

This draws an oval of lines, inside the orginal circle, with the line
length having sin periodicity around the circle. Can anyone improve my
math so that I can get the lines placed properly with the proper length?

Please email me directly as well as respond to the list. Thanks so much
in advance.

--Math Challenged Mark

Ma**********@bayer.com
Jul 18 '05 #1
2 2085
On Thu, 04 Sep 2003 07:55:18 -0700, Talon <ta*****@hotmail.com> (by way of Talon <ta*****@hotmail.com>) wrote:
Hi all,

I am new to Tk, so please bear with me. I need someone better at math
than me to help me figure this out. I am drawing multiple arcs on the
same circle. All arcs start at 90 and have varying negative extents
(different colors, goes all the way around. Represents a microbial
genome). So now that my arcs are drawn, I would would like to draw a
line, 25 pixels long that starts on the circle at the endpoint of each
of the arcs, and looks like an extension of the radius extending above
the circle. Then I would like to print text at the end of this line. So
my question is how do I dynamically calculate the line coordinates?
Circle size is fixed, number of arcs and their extents are variable.

Code for drawing arc;
$x1,$y1 = 25
$x2,$y2 = 775
$xcenter = $x2/2 + $x1;
$ycenter = $y2/2 + $y1;

$canvas->createArc($x1,$y1,$x2,$y2,
-width=>10,
-outline=>$colors[$color],
-style=>'arc',
-start=>90,
-extent=>-$actual_angle,
-tags=>$myorfs{$key}[1]);

What I have so far to draw lines:

$xstart = (cos($current_arclength)*$radius+$xcenter) /10;
$ystart = (sin($current_arclength)*$radius+$ycenter) /10; These look ok except dividing by 10, assuming the units for the angle are ok (degrees vs radians?)
Dividing by 10 seems weird here, so try leaving it out.
$canvas->createLine($xstart+$xcenter,
$ystart+$ycenter, From above, xstart already has xcenter in it, so don't add it again. Same for ycenter. $xstart+($xstart*0.01)+$xcenter,
$ystart+($ystart*0.01)+$ycenter); If you want to draw a 25-pixel line, where is the "25"? You just need to resolve the 25
into x and y components and add them to your respective starting points, I would think.
So UIAM the above becomes (giving a name to the 25-pixel length (assuming dimensions are in pixels)

$tick_length = 25.0;

$xstart = cos($current_arclength)*$radius+$xcenter;
$ystart = sin($current_arclength)*$radius+$ycenter;

$canvas->createLine($xstart,
$ystart,
$xstart+ cos($current_arclength)*$tick_length,
$ystart+ sin($current_arclength)*$tick_length);

This draws an oval of lines, inside the orginal circle, with the line
length having sin periodicity around the circle. Can anyone improve my
math so that I can get the lines placed properly with the proper length?

Please email me directly as well as respond to the list. Thanks so much
in advance.

--Math Challenged Mark

Ma**********@bayer.com


HTH

Regards,
Bengt Richter
Jul 18 '05 #2
> $xstart = (cos($current_arclength)*$radius+$xcenter) /10;
$ystart = (sin($current_arclength)*$radius+$ycenter) /10;


I wouldn't be using lengths of arcs, if I were you. And that division
by 10 looks a bit odd, too.

Given a circle of radius r, if the arc stops at an angle theta to the
horizontal (measured anticlockwise from the east), then the point on
the circle is:
x = xcentre + r * cos(theta)
y = ycentre + r * sin(theta)

If you want to know the point at a distance 25 from the circle, simply
substitute (r + 25) in the formula above.
Jul 18 '05 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: Talon | last post by:
Hi all, I am new to Tk, so please bear with me. I need someone better at math than me to help me figure this out. I am drawing multiple arcs on...
8
by: Stub | last post by:
In statement: Circle c1=c2; Is the assignment operator= of Circle called? In statement Circle c1(c2); Is the copy constructor called?
1
by: rdeaton | last post by:
I need to design and code a Java program that calculates and prints the (D) diameter, the (C) circumference, or the (A) area of a circle, given the...
0
by: Chua Wen Ching | last post by:
Hi.. just wonder i draw a circle in the picturebox1 1) and i want to store the circle in memory (only circle) when i store into bmp... i...
14
by: Pythor | last post by:
I wrote the following code for a personal project. I need a function that will plot a filled circle in a two dimensional array. I found...
0
by: Carl Gilbert | last post by:
Hi I am trying to plot a series of shapes in a circular fashion. All shapes are evenly spaced with lines going between each shape. At present,...
9
by: saraaana | last post by:
Given the center and a point on the circle, you can use this formula to find the radius of the circle. Write a program that prompts the user to enter...
7
by: heterodon7 | last post by:
hello, can anyone give me a clue or simple code on task: for example we have in 2D an equation fo circle: (x - 3)^2 + (y - 4)^2 = 25. now...
14
by: DeadSilent | last post by:
I have this code and for some reason I keep getting an error where it says "exporting non-public type through public api ".. I'm not sure why this...
0
by: teenabhardwaj | last post by:
How would one discover a valid source for learning news, comfort, and help for engineering designs? Covering through piles of books takes a lot of...
0
by: Kemmylinns12 | last post by:
Blockchain technology has emerged as a transformative force in the business world, offering unprecedented opportunities for innovation and...
0
by: CD Tom | last post by:
This happens in runtime 2013 and 2016. When a report is run and then closed a toolbar shows up and the only way to get it to go away is to right...
0
by: CD Tom | last post by:
This only shows up in access runtime. When a user select a report from my report menu when they close the report they get a menu I've called Add-ins...
0
by: Naresh1 | last post by:
What is WebLogic Admin Training? WebLogic Admin Training is a specialized program designed to equip individuals with the skills and knowledge...
0
jalbright99669
by: jalbright99669 | last post by:
Am having a bit of a time with URL Rewrite. I need to incorporate http to https redirect with a reverse proxy. I have the URL Rewrite rules made...
0
by: antdb | last post by:
Ⅰ. Advantage of AntDB: hyper-convergence + streaming processing engine In the overall architecture, a new "hyper-convergence" concept was...
0
by: Matthew3360 | last post by:
Hi there. I have been struggling to find out how to use a variable as my location in my header redirect function. Here is my code. ...
2
by: Matthew3360 | last post by:
Hi, I have a python app that i want to be able to get variables from a php page on my webserver. My python app is on my computer. How would I make it...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.