[asp/access] grafiek tekenen met diagonale assen

Pagina: 1
Acties:
  • 100 views sinds 30-01-2008

  • Dennis013
  • Registratie: Januari 2003
  • Laatst online: 20-04 14:38
ik heb een quiz gemaakt, deze quiz heeft 8 onderwerpen. Aan het einde van de vragen komt er per onderwerp een gemiddelde score uit (0 tm/ 100).

Nu is de grafiek eigenlijk een assenstelsel met de standaar x & y as, maar met 2 extra assen die diagonaal (45 graden) staan.

In totaal dus 8 zijdes.
Ik weet hoe ik in asp-code lijnen moet tekenen en het assenstelsel heb ik al.
Maar waar ik nu mee zit is... Hoe zet ik de gemiddelde score om in de juiste coordinaat?
Op de x en de y as is dat geen probleem (want dan heb je alvast één vaste coordinaat), maar hoe ga ik de schuine zijdes berekenen?

Afbeeldingslocatie: http://www.afhakers.nl/public/images_upload/grafiek.gif
Het vak waarin de grafiek staat heeft een 800*800px afmeting en dus is (400,400) het nulpunt.

Dit is een voorbeeldje wat ik in photoshop gemaakt heb, maar zo moet het resultaat er uit ziet.
Wat ik nu uit de test krijg zijn dus 8 gemiddelden.

Iemand enig idee hoe ik dat het beste kan gaan aanpakken? :?

Per getekenende lijn moet ik een begin- en eindcoordinaat aangeven, dus stel dat het gemiddelde bij score 1, 80 was dan zou ik als coordinaat (400,30) moeten krijgen. TIA!

[ Voor 4% gewijzigd door Dennis013 op 23-02-2004 21:24 ]


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Met ASP.Net kun je gebruikmaken van de System.Drawing namespaces.

Zoiets dus:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<%@ Page Language="VB" ContentType="image/jpeg" %>
<%@ import Namespace="System.Drawing" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<%@ import Namespace="System.Drawing.Drawing2D" %>
<%
    Response.Clear()
    Dim height As integer = 100
    Dim width As integer = 300
    Dim r As New Random
    Dim x As integer = r.Next(75)
    Dim x1 As integer = 0
    Dim a As integer = r.Next(155)
    Dim x2 As integer = r.Next(100)
    
    Dim bmp As New Bitmap(width, height, PixelFormat.Format24bppRgb)
    Dim g As Graphics = Graphics.FromImage(bmp)
    
    g.SmoothingMode = SmoothingMode.AntiAlias
    g.Clear(Color.FromArgb(255, 106, 255, 170))
    
    'g.DrawRectangle(Pens.White, 1, 1, width-3, height-3)
    'g.DrawRectangle(Pens.Gray, 2, 2, width-3, height-3)
    'g.DrawRectangle(Pens.Black, 0, 0, width, height)
    
    g.DrawString("Leuke tekst door een blauw kadertje", New Font("Arial", 10, FontStyle.Bold), SystemBrushes.WindowText, New PointF(10, 30))
    
    g.FillRectangle(New SolidBrush(Color.FromArgb(155, 101, 138, 245)), 20, 20, 200, 50)
    
    bmp.Save(Response.OutputStream, ImageFormat.Jpeg)
    g.Dispose()
    bmp.Dispose()
    Response.End()
%>


Hier heb je een paar starter kits (de bovenste 2) die intensief gebruikmaken van de System.Drawing mogelijkheden.

[ Voor 13% gewijzigd door Not Pingu op 23-02-2004 21:19 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


  • Dennis013
  • Registratie: Januari 2003
  • Laatst online: 20-04 14:38
geweldig... maarrrr

Ik werk niet met asp.net. Ik weet echter ook al hoe ik de lijnen moet trekken dus daar heb ik geen code meer voor nodig.

Mijn probleem is hoe ik die coordinaten op de schuine zijdes berekend krijg vanuit een gemiddelde score 8)7

Dus als je naar het plaatje kijkt. Bijvoorbeeld score 2:
Laten we zeggen dat score 2 een gemiddelde had van 60.. En we starten uit het nulpunt (400,400) 6 stappen (40px per stap) omhoog.
Hoe weet ik dan op welke coordinaat ik zit?

[ Voor 33% gewijzigd door Dennis013 op 23-02-2004 21:24 ]


  • Dennis013
  • Registratie: Januari 2003
  • Laatst online: 20-04 14:38
niemand? Is dit wel te doen, of is het beter om de gemiddelden op hele getallen af te ronden en dan per as de coordinaat vooraf te definieren?
Niet echt een nette oplossing, maar werkt wel?

Ik doe het natuurlijk liefst op de 'nette' manier. Ik denk zelf dat er iets van pythagoras bij komt kijken, maar mijn wiskunde is echt beroerd!!

[ Voor 4% gewijzigd door Dennis013 op 24-02-2004 09:32 ]


  • disjfa
  • Registratie: April 2001
  • Laatst online: 08-01 11:17

disjfa

be

Dennis013 schreef op 23 februari 2004 @ 21:21:
Hoe weet ik dan op welke coordinaat ik zit?
400 + (6 * 40)

:?

disjfa - disj·fa (meneer)
disjfa.nl


  • douweh
  • Registratie: Maart 2001
  • Laatst online: 09-10-2024
de lengte van een rechte zijde van een gelijkbenige driehoek met een hoek van 90 graden is:

code:
1
rechtezijde=schuinezijde / wortel(2)


Daarmee kan je dus alles berekenen in principe..

als je er steeds van uitgaat dat de schuine lijn een lengte heeft van 400 px.
en dat het gegeven in de variabele waarde staat en dat waarde max 100 is.
dan krijg je dus:

code:
1
2
3
4
5
6
7
8
9
10
11
xscore1=400;
yscore1=400-(waarde/100)*400;

xscore2=400+((waarde/100)*400)/wortel(2);
yscore2=400-((waarde/100)*400)/wortel(2);

xscore3=400+(waarde/100)*400;
yscore3=400;

xscore4=400+((waarde/100)*400)/wortel(2);
yscore4=400+((waarde/100)*400)/wortel(2);


en zo de hele klok rond moet werken lijkt me.

[ Voor 72% gewijzigd door douweh op 24-02-2004 10:14 ]


  • Dennis013
  • Registratie: Januari 2003
  • Laatst online: 20-04 14:38
Op een schuine zijde werkt dat zo niet....

  • disjfa
  • Registratie: April 2001
  • Laatst online: 08-01 11:17

disjfa

be

Dennis013 schreef op 24 februari 2004 @ 10:36:
[...]
Op een schuine zijde werkt dat zo niet....
Nee, daar zijn andere formules voor. Maar ik ga niet mijn wiskunde boek van 10 jaar geleden erbij pakken om te zoeken welke formule daar voor is. Je kan van een schuine lijn ook berekenen waar wat staat. Dat is het leuke van rekenfuncties.

Ik zou zeggen pak een leuk wiskunde boek en bekijk hoe je cordinaten van een schuine lijn kan vinden :) Dan kan je die functies gebruiken in je asp :)

disjfa - disj·fa (meneer)
disjfa.nl


  • Dennis013
  • Registratie: Januari 2003
  • Laatst online: 20-04 14:38
douweh schreef op 24 februari 2004 @ 10:05:
de lengte van een rechte zijde van een gelijkbenige driehoek met een hoek van 90 graden is:

code:
1
rechtezijde=schuinezijde / wortel(2)


Daarmee kan je dus alles berekenen in principe..

als je er steeds van uitgaat dat de schuine lijn een lengte heeft van 400 px.
en dat het gegeven in de variabele waarde staat en dat waarde max 100 is.
dan krijg je dus:

code:
1
2
3
4
5
6
7
8
9
10
11
xscore1=400;
yscore1=400-(waarde/100)*400;

xscore2=400+((waarde/100)*400)/wortel(2);
yscore2=400-((waarde/100)*400)/wortel(2);

xscore3=400+(waarde/100)*400;
yscore3=400;

xscore4=400+((waarde/100)*400)/wortel(2);
yscore4=400+((waarde/100)*400)/wortel(2);


en zo de hele klok rond moet werken lijkt me.
ik denk dat hier wel wat inzit, alleen wiskunde is echt nog een beetje |:( roestig bij mij.

wat bedoel je met wortel(2)?
Hoe zie je dat in asp/vbscript?

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Dennis013 schreef op 24 februari 2004 @ 10:39:
[...]


ik denk dat hier wel wat inzit, alleen wiskunde is echt nog een beetje |:( roestig bij mij.

wat bedoel je met wortel(2)?
Hoe zie je dat in asp/vbscript?
/me rekent eigenlijk nooit in asp/vbscript

maar, je zou ook x^0.5 kunnen doen, das immers gelijk aan een wortel...

edit:

volgens mij is dit wel het verkeerde forum

[ Voor 8% gewijzigd door faabman op 24-02-2004 10:47 ]

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • douweh
  • Registratie: Maart 2001
  • Laatst online: 09-10-2024
ik bedoel natuurlijk de wortel van 2,
ik weet niet hoe je dat doet in asp..
maar met die constante moet je vermenigvuldigen

  • Dennis013
  • Registratie: Januari 2003
  • Laatst online: 20-04 14:38
Ik denk dat ik snap wat je bedoeld!
Langzaam is die verschrikkelijk wiskunde-lerares aan het terugkruipen in mijn hoofd ;)

Ik ga dit vanavond even checken en post het resultaat weer terug!

Verwijderd

k, pythagoras: a2+b2=c2
code:
1
2
3
4
   /|
C / | A
 /__|
   B
je weet C (das je gemiddelde, zover moet ie op de as staan..), en A en B zijn gelijk als ie de hoek 45 graden is..
als je wilt weten hoever je punt uit het middelpunt moet staan is het dus
(C^2 / 2)^0.5 = de waarden die je moet hebben

dus links boven:
x = 400 - (C^2 / 2)^0.5
y = 400 - (C^2 / 2)^0.5

dus links onder:
x = 400 - (C^2 / 2)^0.5
y = 400 + (C^2 / 2)^0.5

dus rechts boven:
x = 400 + (C^2 / 2)^0.5
y = 400 + (C^2 / 2)^0.5

dus rechts onder:
x = 400 + (C^2 / 2)^0.5
y = 400 - (C^2 / 2)^0.5

  • 4VAlien
  • Registratie: November 2000
  • Laatst online: 08-04 20:02

4VAlien

Intarweb!

De stelling van Pythagoras lijkt me niet iets wat je wilt vergeten! En dan is dit nog een driehoek met 45 en 90 graden hoeken

  • Dennis013
  • Registratie: Januari 2003
  • Laatst online: 20-04 14:38
er zijn wel meer dingen die ik liever niet vergeten was....... maar wat ook al weer :?

  • Dennis013
  • Registratie: Januari 2003
  • Laatst online: 20-04 14:38
Verwijderd schreef op 24 februari 2004 @ 13:57:
k, pythagoras: a2+b2=c2
code:
1
2
3
4
   /|
C / | A
 /__|
   B
je weet C (das je gemiddelde, zover moet ie op de as staan..), en A en B zijn gelijk als ie de hoek 45 graden is..
als je wilt weten hoever je punt uit het middelpunt moet staan is het dus
(C^2 / 2)^0.5 = de waarden die je moet hebben

dus links boven:
x = 400 - (C^2 / 2)^0.5
y = 400 - (C^2 / 2)^0.5

dus links onder:
x = 400 - (C^2 / 2)^0.5
y = 400 + (C^2 / 2)^0.5

dus rechts boven:
x = 400 + (C^2 / 2)^0.5
y = 400 + (C^2 / 2)^0.5

dus rechts onder:
x = 400 + (C^2 / 2)^0.5
y = 400 - (C^2 / 2)^0.5
Dit is gewoon zwaar geweldig! :o :o :o

HET WERKT.. je had wel alleen linksboven en linksonder door elkaar gehaald!!
:Y) :Y)
:o

  • Dennis013
  • Registratie: Januari 2003
  • Laatst online: 20-04 14:38
Ok, ik doe even reageren op mijn eigen bericht.
Ik wil namelijk hetzelfde doen voor een nieuwe test...

Alleen deze keer hebben de hoeken geen 45 graden, maar 30 graden verschil... Er zijn dus 12 assen op de grafiek.
Welke formule gebruik je daarvoor?

Kan dat mogelijk ook in excel? Dat je de resultaten daarin verwerkt en dat excel o.i.d. dan de resultaten verwerkt tot een radar diagram?

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 07:09

Pelle

🚴‍♂️

Dit heeft niks met W&G te maken :)

En als je een beetje logisch nadenkt kom je ook wel uit die formule.. redelijk basic wiskunde :)
Pagina: 1

Dit topic is gesloten.