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