tochka

package module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 21, 2024 License: MIT Imports: 6 Imported by: 0

README

tochka — пакет для двумерных точек и аффинных преобразований.

tochka — это пакет на языке Go, которая предоставляет функционал для работы с двухмерными точками и матрицами аффинных преобразований. Этот пакет идеально подходит для графических приложений, обработки геометрии и других задач, связанных с 2М-пространством.

Особенности

  • Работа с точками:

    • Операции сложения, вычитания, умножения и деления.
    • Округление координат до целых чисел.
    • Удобное строковое представление точек в формате (X, Y).
  • Аффинные преобразования:

    • Операции сдвига, масштабирования, вращения и наклона (shear).
    • Комбинирование преобразований с помощью умножения матриц.
    • Инверсия матрицы преобразования.
    • Применение преобразований к двумерным точкам.
  • Простое и интуитивное API для разработчиков.

Установка

Для установки пакета используйте команду:

go get github.com/MiCkEyZzZ/tochka

Пример использования

Работа с точками

package main

import (
	"fmt"

	"github.com/MiCkEyZzZ/tochka"
)

func main() {
	p1 := tochka.NewPoint(2.5, 3.7)
	p2 := tochka.NewPoint(1.2, -0.5)

	sum := p1.Add(p2)
	fmt.Println("Сумма точек:", sum)

	rounded := sum.Round()
	fmt.Println("Округленные координаты: ", rounded)
}

Вывод программы:

Сумма точек: (3.700000, 3.200000)
Округленные координаты: (4, 3)

Аффинные преобразования

package main

import (
	"fmt"

	"github.com/MiCkEyZzZ/tochka"
)

func main() {
	transform := tochka.NewAffine2D(1, 0, 10, 0, 1, 20) // Сдвиг на (10, 20)

	point := tochka.NewPoint(5, 5)
	transformed := transform.Transform(point)

	fmt.Println("Исходная точка:", point)
	fmt.Println("После преобразования:", transformed)
}

Вывод программы:

Исходная точка: (5.000000, 5.000000)
После преобразования: (15.000000, 25.000000)

API

Пакет предоставляет следующие ключевые методы для работы с точками и аффинными преобразованиями:

Для типа Point:

  • NewPoint(x, y float32) Point: Создаёт точку с заданными координатами.
  • Add(other Point) Point: Складывает текущую точку с другой.
  • Sub(other Point) Point: Вычитает другую точку из текущей.
  • Mul(scale Point) Point: Умножает координаты точки на коэффициенты.
  • Div(scale Point) (Point, error): Делит координаты точки, возвращая ошибку при делении на 0.
  • Round() Point: Округляет координаты до ближайших целых.

Для типа Affine2D:

  • NewAffine2D(sx, hx, ox, hy, sy, oy float32) Affine2D: Создаёт аффинное преобразование.
  • Offset(offset Point) Affine2D: Выполняет сдвиг матрицы на указанный вектор.
  • Scale(origin, factor Point) Affine2D: Масштабирует относительно заданной точки.
  • Rotate(origin Point, radians float32) Affine2D: Вращает точку на угол в радианах.
  • Shear(origin Point, radiansX, radiansY float32) Affine2D: Применяет наклон (shear).
  • Mul(other Affine2D) Affine2D: Умножает матрицы для комбинирования преобразований.
  • Invert() Affine2D: Вычисляет обратное преобразование.
  • Transform(p Point) Point: Применяет преобразование к точке.
  • Elems() (sx, hx, ox, hy, sy, oy float32): Возвращает элементы матрицы.
  • Split() (Affine2D, Point): Разделяет преобразование на матрицу и вектор сдвига.

Полный список методов и их описание можно найти в документации.

Лицензия

Этот проект распространяется под лицензией MIT. Полный текст лицензии доступен в файле ЛИЦЕНЗИЯ.

Documentation

Overview

Пакет tochka предоставляет инструменты для работы с двухмерными точками и аффинными преобразованиями в двумерной системе координат. Пакет подходит для выполнения операций сдвига, масштабирования, вращения и наклона, что делает его полезным для манипуляции 2М-геометрией в графических приложениях.

Тип Point

Тип Point представляет собой точку в двумерной системе координат с координатами X и Y (тип float32). Этот тип включает основные арифметические операции и вспомогательные методы для работы с точками.

Основные методы:

  • NewPoint(x, y float32) Point: Создает точку с заданными координатами.
  • String() string: Возвращает строковое представление точки в формате "(X, Y)".
  • Add(other Point) Point: Складывает текущую точку с другой.
  • Sub(other Point) Point: Вычитает другую точку из текущей.
  • Mul(scale float32) Point: Умножает координаты точки на коэффициент.
  • Div(scale float32) (Point, error): Делит координаты точки на коэффициент, возвращая ошибку при делении на 0.
  • Distance(other Point) float32: Возвращает расстояние между текущей точкой и другой.
  • Round() image.Point: Округляет координаты до ближайших целых и возвращает объект image.Point.

Тип Affine2D

Тип Affine2D представляет аффинное преобразование, описанное матрицей 3x3, которая поддерживает операции трансформации в двумерном пространстве, включая сдвиг, масштабирование, вращение и наклон.

Основные методы:

  • NewAffine2D(sx, hx, ox, hy, sy, oy float32) Affine2D: Создает преобразование из элементов матрицы.
  • Offset(offset Point) Affine2D: Выполняет сдвиг матрицы на указанный вектор.
  • Scale(origin, factor Point) Affine2D: Масштабирует относительно заданной точки.
  • Rotate(origin Point, radians float32) Affine2D: Вращает вокруг заданной точки на угол в радианах.
  • Shear(origin Point, radiansX, radiansY float32) Affine2D: Применяет наклон матрицы под заданными углами.
  • Mul(other Affine2D) Affine2D: Умножает текущее преобразование на другое.
  • Invert() Affine2D: Вычисляет обратное преобразование, если это возможно.
  • Transform(p Point) Point: Применяет преобразование к точке и возвращает новую точку.
  • Elems() (sx, hx, ox, hy, sy, oy float32): Возвращает элементы матрицы преобразования.
  • Split() (Affine2D, Point): Разделяет преобразование на матрицу без сдвига и вектор сдвига.
  • String() string: Возвращает строковое представление матрицы преобразования в формате "[[sx hx ox] [hy sy oy]]".

Пакет разработан для интеграции в графические приложения и обработки 2D-геометрии. Он полезен как для учебных, так и для производственных проектов, где требуется работа с точками и аффинными преобразованиями в двумерном пространстве.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Affine2D

type Affine2D struct {
	// contains filtered or unexported fields
}

Affine2D представляет аффинное преобразование в двумерной системе координат. Содержит элементы матрицы преобразования, которые позволяют выполнять операции сдвига, масштабирования, вращения и наклона.

func NewAffine2D

func NewAffine2D(sx, hx, ox, hy, sy, oy float32) Affine2D

NewAffine2D создаёт новое аффинное преобразование. sx, hx, ox — элементы первой строки матрицы (масштаб по X, наклон по X, перенос по X). hy, sy, oy — элементы второй строки матрицы (наклон по Y, масштаб по Y, перенос по Y).

func (Affine2D) Elems

func (a Affine2D) Elems() (sx, hx, ox, hy, sy, oy float32)

Elems возвращает элементы матрицы преобразования.

func (Affine2D) Invert

func (a Affine2D) Invert() Affine2D

Invert вычисляет обратное преобразование для текущей матрицы. Если матрица близка к сингулярной, результаты могут быть неточными.

func (Affine2D) Mul

func (A Affine2D) Mul(B Affine2D) (r Affine2D)

Mul выполняет умножение текущей матрицы на другую матрицу. B — другая матрица преобразования. Возвращает результат умножения.

func (Affine2D) Offset

func (a Affine2D) Offset(offset Point) Affine2D

Offset выполняет сдвиг матрицы преобразования на заданный вектор. offset определяет величину сдвига по X и Y.

func (Affine2D) Rotate

func (a Affine2D) Rotate(origin Point, radians float32) Affine2D

Rotate выполняет вращение матрицы вокруг заданной точки на указанный угол. origin задаёт точку, вокруг которой выполняется вращение. radians задаёт угол вращения в радианах. Возвращает новую матрицу преобразования с учетом вращения.

func (Affine2D) Scale

func (a Affine2D) Scale(origin, factor Point) Affine2D

Scale выполняет масштабирование матрицы относительно заданной точки. origin задаёт точку, вокруг которой выполняется масштабирование. factor задаёт коэффициенты масштабирования по X и Y. Возвращает новую матрицу преобразования с учетом масштабирования.

func (Affine2D) Shear

func (a Affine2D) Shear(origin Point, radiansX, radiansY float32) Affine2D

Shear выполняет наклон матрицы под заданными углами относительно указанной точки. origin задаёт точку, относительно которой выполняется наклон. radiansX и radiansY задают углы наклона по осям X и Y соответственно. Возвращает новую матрицу преобразования с учетом наклона.

func (Affine2D) Split

func (a Affine2D) Split() (src Affine2D, offset Point)

Split разделяет преобразование на матрицу без сдвига и вектор сдвига. Возвращает новую матрицу и вектор сдвига.

func (Affine2D) String

func (a Affine2D) String() string

String возвращает строковое представление матрицы преобразования. Формат: "[[sx hx ox] [hy sy oy]]".

func (Affine2D) Transform

func (a Affine2D) Transform(p Point) Point

Transform применяет текущее преобразование к заданной точке. p — точка, к которой применяется преобразование.

type Point

type Point struct {
	X, Y float32
}

Point представляет точку в двумерной системе координат с координатами X и Y.

func NewPoint

func NewPoint(x, y float32) Point

NewPoint создаёт и возвращает новую точку с заданными координатами x и y.

func (Point) Add

func (p Point) Add(point Point) Point

Add возвращает новую точку, полученную сложением текущей точки с другой.

func (Point) Distance

func (p Point) Distance(point Point) float32

Distance возвращает расстояние между текущей точкой и заданной точкой.

func (Point) Div

func (p Point) Div(s float32) (Point, error)

Div возвращает новую точку с координатами, разделенными на заданный коэффициент s.

func (Point) Mul

func (p Point) Mul(s float32) Point

Mul возвращает новую точку с координатами, умноженными на заданный множитель s.

func (Point) Round

func (p Point) Round() image.Point

Round округляет координаты точки до ближайших целых значений и возвращает объект image.Point.

func (Point) String

func (p Point) String() string

String возвращает строковое представление точки в формате "(X, Y)".

func (Point) Sub

func (p Point) Sub(point Point) Point

Sub возвращает новую точку, координаты которой равны разности текущей точки и другой.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL