Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Dela upp en cirkel i lika stora delar

Postades av 2012-10-29 21:50:02 - Benni Svensson, i forum c# (c-sharp), Tråden har 14 Kommentarer och lästs av 13448 personer

Jag skulle behöva lite hjälp med ett litet verktyg, som skall användas tillsammans med ett rundbord till en fräs. Det gäller att kunna dela upp en cirkel i lika stora delar, används bl a för att kunna göra kuggar, borra fastsättningshål i en cylinder mm. Själva matten i grunden är ju inte så svår, cirklen är ju 360 grader delat med antal delningar dvs är det 3 delningar så blir det 0, 120 och 240.
Så långt är det inte så svårt, och det har jag programmerat, men sen vill jag gärna rita upp detta också och det blir ju en annan femma.
Själva cirklen ritar jag så här:

                int r = 200;
                int x = this.Height / 2, y = this.Width / 2;
                Rectangle rectangleObj = new Rectangle(x - r, y - r, r, r);
                Graphics g = this.CreateGraphics();
                Rectangle drawArea1 = new Rectangle(x - r, y - r, r, r);
                LinearGradientBrush linearBrush = new LinearGradientBrush(drawArea1, Color.AntiqueWhite,
                Color.Red, LinearGradientMode.ForwardDiagonal);
                g.FillEllipse(linearBrush, x - r, y - r, r, r);
                Pen myPen = new Pen(Color.Red);
                g.DrawEllipse(myPen, rectangleObj);

Problemet är nu, hur skall jag kunna rita in delningarna, gärna som små cirklar).


Svara

Sv: Dela upp en cirkel i lika stora delar

Postades av 2012-11-01 08:08:42 - Tomas Granlund

Edit: Uppdaterat exempel för att rita "hål" istf. "tårtbitar"

protected override void OnPaint(PaintEventArgs e)
{
	base.OnPaint(e);
	Graphics g = e.Graphics;
	var circle = new CircleDefinition() 
	{ 
		Radius = 200, 
		NrOfSections = 14, // fetch these values from a textbox/config file or whatever...
		HoleRadius = 20,
		HoleOffset = 30,
		Center = new Point(this.Width / 2, this.Height / 2) 
	};
	DrawCircle(g, circle);
	DrawHoles(g, circle);
}

private void DrawCircle(Graphics g, CircleDefinition circle)
{
	Rectangle rectangleObj = new Rectangle(circle.Center.X - circle.Radius, circle.Center.Y - circle.Radius, circle.Radius * 2, circle.Radius * 2);
	Rectangle drawArea1 = new Rectangle(circle.Center.X - circle.Radius, circle.Center.Y - circle.Radius, circle.Radius * 2, circle.Radius * 2);

	LinearGradientBrush linearBrush = new LinearGradientBrush(drawArea1, Color.AntiqueWhite,
	Color.Red, LinearGradientMode.ForwardDiagonal);

	g.FillEllipse(linearBrush, circle.Center.X - circle.Radius, circle.Center.Y - circle.Radius, circle.Radius * 2, circle.Radius * 2);
	Pen myPen = new Pen(Color.Red);
	g.DrawEllipse(myPen, rectangleObj);
}

private void DrawHoles(Graphics g, CircleDefinition circle)
{
	var rad = 0d;
	var radPerSection = 2 * Math.PI / circle.NrOfSections;
	var pen = new Pen(Color.Black);
	var distanceFromCenter = circle.Radius - circle.HoleOffset;

	for (var sectionNr = 0; sectionNr < circle.NrOfSections; sectionNr++)
	{
		var holeBoundingBox = new Rectangle(
			circle.Center.X - circle.HoleRadius + (int)(distanceFromCenter * Math.Sin(rad)),
			circle.Center.Y - circle.HoleRadius + (int)(distanceFromCenter * Math.Cos(rad)),
			circle.HoleRadius * 2,
			circle.HoleRadius * 2);
		g.DrawEllipse(pen, holeBoundingBox);
		rad += radPerSection;
	}
}

private class CircleDefinition
{
	public Point Center { get; set; }
	public int Radius { get; set; }
	public int HoleRadius { get; set; } // Radius of the holes
	public int HoleOffset { get; set; } // Distance between the circle's rim and the centerpoint of the holes
	public int NrOfSections { get; set; }
}


Svara

Sv:Dela upp en cirkel i lika stora delar

Postades av 2012-11-01 12:13:19 - Benni Svensson

Hej Tomas och tack för att du försöker hjälpa mig. Meningen är att det skall vara lite mera dynamiskt. Via en textruta skrivs det in antal delningar. 2 - vad det nu kan vara.
Inga "tårtbitar" utan små hål (cirklar) ville jag ha runt den stora cirklens radie.


Svara

Sv: Dela upp en cirkel i lika stora delar

Postades av 2012-11-01 13:45:26 - Sven Åke Persson

Ett exempel som kanske kan leda dig på spår.

Programarkivet:Cirkel matematik Radar


Svara

Sv:Dela upp en cirkel i lika stora delar

Postades av 2012-11-02 00:49:06 - Benni Svensson

Hej Sven, tyvärr så fungerade inte länken.


Svara

Sv: Dela upp en cirkel i lika stora delar

Postades av 2012-11-02 07:39:49 - Tomas Granlund

Har uppdaterat kodexemplet ovan


Svara

Sv:Dela upp en cirkel i lika stora delar

Postades av 2012-11-02 11:30:01 - Benni Svensson

Det blev helt fantastiskt, med lite modifierande så har jag nu fått det att svara mot textrutan.
Ett problem återstår, i en listbox så behöver jag lägga in de aktuella graderna, dvs t ex 0, 120, 240 osv. JAg har gjort detta men det stämmer inte med hur hålen ritas upp. Vad tror du?

private void doCalcylate()
        {
            try
            {
                decimal slutResultat = 0;
                listBox1.Items.Clear();
                lInfo.Text = "";
                decimal times = 0;
                if (tDevision.Text.Length > 0)
                {
                    times = Convert.ToDecimal(tDevision.Text);
                    decimal result = 360 / Math.Round(times, 0);
                    decimal firstResult = result;
                    listBox1.Items.Add(0);
                    for (int i = 1; i < times; i++)
                    {
                        Application.DoEvents();
                        slutResultat = Math.Round(firstResult, 0);
                        listBox1.Items.Add(slutResultat.ToString());
                        firstResult += result;
                    }
                }
                Application.DoEvents();
            }
            catch (Exception fel)
            {
                lInfo.Text = fel.Message;
            }
        }

I övrikt så fungerar det kanonbra.
MODEFIERAT
Jag vet inte vad jag hadde tänkt på, men det verkar som om detta skall stämma???
int slutResultat = 0;
                int firstResult = 0;
                listBox1.Items.Clear();
                lInfo.Text = "";
                int times = 0;
                if (tDevision.Text.Length > 0)
                {
                    times = Convert.ToInt32(tDevision.Text);
                    int result = 360 ;
                    firstResult = result / times;
                    for (int i = 0; i < times; i++)
                    {
                        Application.DoEvents();
                        slutResultat += firstResult;
                        listBox1.Items.Add(slutResultat.ToString());
                    }
                }


Svara

Sv: Dela upp en cirkel i lika stora delar

Postades av 2012-11-02 13:41:39 - Sven Åke Persson

<Hej Sven, tyvärr så fungerade inte länken.>
Nääää förstår det.Ni har glömt gamla kära VB6
Ni måste ha Vb6 Runtime i Ert System32.

http://support.microsoft.com/kb/290887


Svara

Sv:Dela upp en cirkel i lika stora delar

Postades av 2012-11-02 14:47:37 - Benni Svensson

Nej Sven, inte så utan den länken som du la in här...


Svara

Sv: Dela upp en cirkel i lika stora delar

Postades av 2012-11-02 17:12:16 - Sven Åke Persson

Ok goooooooooa vän.
Jag förstår.Download funkar hos mig.

Ahhhhhhhhh . Va fae.... skall Vi inte kunna skriva kod dom funkar universelt ?

No big deal jag gjorde ett prog som illustrerade en radarskärm.

Som jag alltid sagt/propagerat gör Stand Alone program.

DS


Svara

Sv:Dela upp en cirkel i lika stora delar

Postades av 2012-11-02 17:23:29 - Sven Åke Persson

Ok vad är det för fel på RadarCirkel.
Programarkivet:Cirkel matematik Radar
Vad kan du om Ortonoma koordinator !?
!!!!!!


Svara

Sv: Dela upp en cirkel i lika stora delar

Postades av 2012-11-02 21:58:57 - Dan Therkildsen

Sven, problemet är att länkar till programarkivet inte verkar funkar i den nya designen, däremot funkar det om man går tillbaka till gamla designen (http://dev.pellesoft.se)


Svara

Sv:Dela upp en cirkel i lika stora delar

Postades av 2012-11-10 21:19:05 - Benni Svensson

Efter lite modifieringar så har jag nu ett väldigt bra fungerande programm.
Jag tackar för ditt fina förslag Thomas ;-)


Svara

Sv: Dela upp en cirkel i lika stora delar

Postades av 2012-11-13 20:38:30 - Benni Svensson

JAg måste komma med ytterliggare fråga, i detta excempel så är ju alla avstånd i punkter, men om jag ville översätta det till mm, går det?


Svara

Sv:Dela upp en cirkel i lika stora delar

Postades av 2012-12-06 13:10:57 - Tomas Granlund

Avståndet i mm kommer variera beroende på var den visas (mobiltelefon? 18" skärm? 19"? 21" widescreen? TV? projektor?). Det är ganska svårt att göra nån pålitlig översättning pixlar/bildpunkter <=> (milli)meter som gäller generellt.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 615
27 953
271 709
569
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies