github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/image/geom.go (about) 1 // Copyright 2010 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package image 6 7 import ( 8 "github.com/shogo82148/std/image/color" 9 ) 10 11 // Pointは、X、Y座標のペアです。軸は右と下に増加します。 12 type Point struct { 13 X, Y int 14 } 15 16 // Stringは、pの文字列表現を"(3,4)"のように返します。 17 func (p Point) String() string 18 19 // Addはベクトルp+qを返します。 20 func (p Point) Add(q Point) Point 21 22 // Subはベクトルp-qを返します。 23 func (p Point) Sub(q Point) Point 24 25 // Mulはベクトルp*kを返します。 26 func (p Point) Mul(k int) Point 27 28 // Divはベクトルp/kを返します。 29 func (p Point) Div(k int) Point 30 31 // Inは、pがr内にあるかどうかを報告します。 32 func (p Point) In(r Rectangle) bool 33 34 // Modは、p.X-q.Xがrの幅の倍数で、p.Y-q.Yがrの高さの倍数となるような、r内の点qを返します。 35 func (p Point) Mod(r Rectangle) Point 36 37 // Eqは、pとqが等しいかどうかを報告します。 38 func (p Point) Eq(q Point) bool 39 40 // ZPはゼロ [Point] です。 41 // 42 // Deprecated: 代わりにリテラルの [image.Point] を使用してください。 43 var ZP Point 44 45 // Ptは [Point]{X, Y}の省略形です。 46 func Pt(X, Y int) Point 47 48 // Rectangleは、Min.X <= X < Max.X、Min.Y <= Y < Max.Yの点を含みます。 49 // Min.X <= Max.XおよびYについても同様に成り立つ場合、それは整形されています。 50 // 点は常に整形されています。矩形のメソッドは、整形された入力に対して常に整形された出力を返します。 51 // 52 // Rectangleは、その境界が矩形自体である [Image] でもあります。Atは、 53 // 矩形内の点に対してcolor.Opaqueを、それ以外の場合はcolor.Transparentを返します。 54 type Rectangle struct { 55 Min, Max Point 56 } 57 58 // Stringは、rの文字列表現を"(3,4)-(6,5)"のように返します。 59 func (r Rectangle) String() string 60 61 // Dxは、rの幅を返します。 62 func (r Rectangle) Dx() int 63 64 // Dyは、rの高さを返します。 65 func (r Rectangle) Dy() int 66 67 // Sizeは、rの幅と高さを返します。 68 func (r Rectangle) Size() Point 69 70 // Addは、pによって移動された矩形rを返します。 71 func (r Rectangle) Add(p Point) Rectangle 72 73 // Subは、-pによって移動された矩形rを返します。 74 func (r Rectangle) Sub(p Point) Rectangle 75 76 // Insetは、n(負の場合もあり)によって内側に移動された矩形rを返します。 77 // rの寸法のいずれかが2*n未満の場合、rの中心近くの空の矩形が返されます。 78 func (r Rectangle) Inset(n int) Rectangle 79 80 // Intersectは、rとsの両方に含まれる最大の矩形を返します。もし 81 // 二つの矩形が重ならない場合、ゼロ矩形が返されます。 82 func (r Rectangle) Intersect(s Rectangle) Rectangle 83 84 // Unionは、rとsの両方を含む最小の矩形を返します。 85 func (r Rectangle) Union(s Rectangle) Rectangle 86 87 // Emptyは、矩形が点を含まないかどうかを報告します。 88 func (r Rectangle) Empty() bool 89 90 // Eqは、rとsが同じ点の集合を含むかどうかを報告します。すべての空の 91 // 矩形は等しいとみなされます。 92 func (r Rectangle) Eq(s Rectangle) bool 93 94 // Overlapsは、rとsが非空の交差点を持つかどうかを報告します。 95 func (r Rectangle) Overlaps(s Rectangle) bool 96 97 // Inは、rのすべての点がs内にあるかどうかを報告します。 98 func (r Rectangle) In(s Rectangle) bool 99 100 // Canonは、rの正規化されたバージョンを返します。返される矩形は、必要に応じて最小座標と最大座標が交換され、 101 // 正しく形成されています。 102 func (r Rectangle) Canon() Rectangle 103 104 // Atは、[Image] インターフェースを実装します。 105 func (r Rectangle) At(x, y int) color.Color 106 107 // RGBA64Atは、[RGBA64Image] インターフェースを実装します。 108 func (r Rectangle) RGBA64At(x, y int) color.RGBA64 109 110 // Boundsは、[Image] インターフェースを実装します。 111 func (r Rectangle) Bounds() Rectangle 112 113 // ColorModelは、[Image] インターフェースを実装します。 114 func (r Rectangle) ColorModel() color.Model 115 116 // ZRはゼロ [Rectangle] です。 117 // 118 // Deprecated: 代わりにリテラルの [image.Rectangle] を使用してください。 119 var ZR Rectangle 120 121 // Rectは [Rectangle]{Pt(x0, y0), Pt(x1, y1)}の省略形です。返される 122 // 矩形は、必要に応じて最小座標と最大座標が交換され、正しく形成されています。 123 func Rect(x0, y0, x1, y1 int) Rectangle