Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

62 lignes
1.6KB

  1. package patroon
  2. import (
  3. svg "github.com/ajstarks/svgo/float"
  4. "math"
  5. "naaipatroon/pkg/util"
  6. )
  7. const (
  8. MilliMeter SvgScale = 3.7795
  9. CentiMeter SvgScale = 37.795
  10. )
  11. type SvgScale float64
  12. type Basispatroonbroek struct {
  13. Heupwijdte float64
  14. Taillewijdte float64
  15. Zithoogte float64
  16. Tussenbeenlengte float64
  17. Pijpbreedte float64
  18. Taillebandbreedte float64
  19. Eenheid SvgScale
  20. Eigenaar string
  21. }
  22. func (b *Basispatroonbroek) GeneratePoints() util.PointMap {
  23. p := make(util.PointMap, 30)
  24. p[0] = util.Point{}
  25. p[1] = p[0].Below(b.Zithoogte + 1 - b.Taillebandbreedte)
  26. p[2] = p[1].Below(b.Tussenbeenlengte)
  27. p[3] = p[2].Above(p[1].Distance(p[2])/2 + 5)
  28. p[4] = p[1].Above(b.Zithoogte / 4)
  29. p[5] = p[1].Left(b.Heupwijdte / 12)
  30. p[6] = p[4].Left(b.Heupwijdte / 12)
  31. p[7] = p[0].Left(b.Heupwijdte / 12)
  32. p[8] = p[6].Right(b.Heupwijdte/4 + 2)
  33. p[9] = p[5].Left(b.Heupwijdte/16 + 5)
  34. p[10] = p[7].Right(1)
  35. p[11] = p[10].Right(b.Taillewijdte/4 + 2.5)
  36. p[12] = p[2].Right(b.Pijpbreedte / 2)
  37. p[13] = p[2].Left(b.Pijpbreedte / 2)
  38. p[14] = p[3].Right(b.Pijpbreedte / 2)
  39. p[15] = p[3].Left(b.Pijpbreedte / 2)
  40. return p.Scale(float64(b.Eenheid))
  41. }
  42. func (b *Basispatroonbroek) Voorbeen(canvas *svg.SVG) {
  43. p := b.GeneratePoints().Normalize()
  44. p.Draw(canvas)
  45. p.Line(canvas, 15, 13, 12, 14)
  46. p.Line(canvas, 10, 11)
  47. pa := p[14].Above(p[14].Distance(p[8]) / 3)
  48. pb := p[8].Below(p[14].Distance(p[8]) / 3)
  49. util.Bezier(canvas, p[14], pa, pb, p[8])
  50. p15p9half := p[9].Subtract(p[15]).Divide(2)
  51. pc := p[15].Add(p15p9half).Add(p15p9half.Unit().Rotate(math.Pi / 2).Multiply(3 * float64(b.Eenheid)))
  52. util.Qbez(canvas, p[9], pc, p[15])
  53. }