vec2.go 509 B

123456789101112131415161718192021222324252627282930313233343536
  1. package main
  2. import (
  3. "fmt"
  4. "strconv"
  5. "strings"
  6. )
  7. type Vec2 struct {
  8. X, Y float64
  9. }
  10. func (v *Vec2) String() string {
  11. return fmt.Sprintf("%f %f", v.X, v.Y)
  12. }
  13. func (v *Vec2) Parse(line string) error {
  14. parts := strings.Split(line, " ")
  15. have_x := false
  16. for _, p := range parts {
  17. if CanFloat(p) || CanInt(p) {
  18. val, err := strconv.ParseFloat(p, 64)
  19. if err != nil {
  20. return err
  21. }
  22. if !have_x {
  23. v.X = val
  24. have_x = true
  25. } else {
  26. v.Y = val
  27. break
  28. }
  29. }
  30. }
  31. return nil
  32. }