約 1,191,762 件
https://w.atwiki.jp/color-cube/pages/76.html
Writing Your Own Zillions Game The rules for a game are stored in a Zillions Rules File. These files end with a ".zrf". Zillions loads the ZRF file, and uses it to find out how to run the game. ZRF files have 4 main parts the board, the pieces, the goals of the game, and additional information like help and strategy. You can use any common text editor (like Windows Notepad) to create your new game. Just remember to save your --game with a ".zrf" ending, and make sure you save as text or ASCII. Framework Here is a framework for a game (game ;...players, help and extra information goes here ;...board stuff goes here ;...piece stuff goes here ;...goals of game go here ) There are some important things to note about the overall format. Firstly, you will want to pay careful attention to match parentheses when writing Zillions Rules Files. The parentheses are used to group sections together, so use a ")" for every "(" you type. Notice that some lines begin with a semi-colon (";") character. This indicates that the rest of this line is a comment and will be ignored when Zillions loads this ZRF. It is a good idea to use lots of comments in your ZRF to make it easier to understand. Consistent indentation also makes your program easier to read. Zillions, on the other hand, doesn稚 care. It treats all "white space" equally, from a single space to many tabs and carriage returns. The exception is in a string, delimited with quotation marks, which we値l get to shortly. Help Descriptions OK, let's add a little more to our game (game (title "Tic-Tac-Toe") (description "One side takes X's and the other side takes O's. Players alternate placing their marks on open spots. The object is to get three of your marks in a row horizontally, vertically, or diagonally. If neither side accomplishes this, it's a cat's game (a draw).") (history "Tic-Tac-Toe was an old adaptation of Three Men's Morris to situations where there were no available pieces. You can draw or carve marks and they are never moved. It is played all over the world under various names, such as 'Noughts and Crosses' in England.") (strategy "With perfect play, Tic-Tac-Toe is a draw. Against less than perfect opponents it's an advantage to go first, as having an extra mark on the board never hurts your position. The center is the key square as 4 possible wins go through it. The corners are next best as 3 wins go through each of them. The remaining squares are least valuable, as only 2 wins go through them. Try to get in positions where you can `trap` your opponent by threatening two 3-in-a-rows simultaneously with a single move. To be a good player, you must not only know how to draw as the second player, you must also be able to takes advantage of bad play.") ) You can see we have added several sections which describe the game. The "title" section gives our game a name. All ZRF games need names. A single ZRF can contain multiple games and variants, so don稚 forget to add a title. In this case, we are programming the game "Tic-Tac-Toe". Next, you will see sections on "description", "history" and "strategy". This is extra information for the user, to tell them the object of the game, the history of the game, and suggested strategy to improve his play. The Complete Game OK, now we need to add some more parts (game (title "Tic-Tac-Toe") ; description, history and strategy omitted to save space. (players X O) (turn-order X O) (board (image "images\TicTacToe\TTTbrd.bmp") (grid (start-rectangle 16 16 112 112) ; top-left position (dimensions ;3x3 ("top-/middle-/bottom-" (0 112)) ; rows ("left/middle/right" (112 0))) ; columns (directions (n -1 0) (e 0 1) (nw -1 -1) (ne -1 1)) ) ) (piece (name man) (help "Man drops on any empty square") (image X "images\TicTacToe\TTTX.bmp" O "images\TicTacToe\TTTO.bmp") (drops ((verify empty?) add)) ) (board-setup (X (man off 5)) (O (man off 5)) ) (draw-condition (X O) stalemated) (win-condition (X O) (or (relative-config man n man n man) (relative-config man e man e man) (relative-config man ne man ne man) (relative-config man nw man nw man) ) ) ) The above sample is a complete game. You could cut it out and paste it into a ZRF file, and play it. Let's look at each of the new sections Players (players X O) This line tells Zillions the names of the players. In this case, there are two players named "X" and "O". That was easy! (turn-order X O) This line tells Zillions the turn-order that players move. In this case, "X" will move first, and then "O" will move. After that, the turn order will repeat, so "X" will move again, and so on. OK, we have told Zillions about the players. Let痴 tell the program about the board Board (board (image "images\TicTacToe\TTTbrd.bmp") (grid (start-rectangle 16 16 112 112) ; top-left position (dimensions ;3x3 ("top-/middle-/bottom-" (0 112)) ; rows ("left/middle/right" (112 0))) ; columns (directions (n -1 0) (e 0 1) (nw -1 -1) (ne -1 1)) ) ) Use the "board" statement to tell Zillions about the board. The "image" statement tells Zillions what bitmap file (*.BMP) to use to display the board. In this case, the file in "images\TicTacToe\TTTbrd.bmp" will be used. You can create new board images using a graphics editor, like Windows Paint. The "grid" statement makes it easy for you to specify a regularly spaced set of positions. The "start-rectangle" tells Zillions rectangle of the upper left screen position. In this case, this is from the point 16,16 to the point 112, 112. Points are measured over and down from the upper left corner of the window. The "dimensions" section has information about the placement and name of the positions. The line "("top-/middle-/bottom-" (0 112)) " tells Zillions the rows will be named "top-", "middle-" and "bottom-". To progress downward to the next row, the Y coordinate will have 112 added to it (the X coordinate will remain unchanged, since there is a 0 in that position). The next line has "("left/middle/right" (112 0)))". This specifies the column names and offsets. The "directions" statement indicates the directions linking each position ("n" for north, "e" for "east" and so on). The numbers after these names indicated which way to step for that direction. Use 0 for no change, or "1" or "-1" to got forward or backward. When Zillions reads this "grid" statement, then it will combine all this information to make a three by three grid, with names of positions like "top-left" and "bottom-right". OK, we have a board now, what do we use to specify a piece? Why, the "piece" statement, of course Pieces (piece (name man) (help "Man drops on any empty square") (image X "images\TicTacToe\TTTX.bmp" O "images\TicTacToe\TTTO.bmp") (drops ((verify empty?) add)) ) The "name" section gives this piece a name "man". The "help" section gives the text which Zillions will automatically display in the Status bar when the user points to the piece. You should put information about how the piece moves in this section. The "image" section gives the bitmap names for Zillions to use for each piece and for each player. You can make new piece bitmaps using a graphics editor like Windows Paint. Note that any fully green part of the bitmap will appear as "transparent". The "drops" section tells Zillions that this piece is dropped onto the board when it moves. The "(verify empty?)" section tells Zillions to make sure a position is empty before "add"ing it to the board. Next, we tell Zillions how many pieces there are, and where they are located at the start of the game (board-setup (X (man off 5)) (O (man off 5)) ) The "board-setup" section tells Zillions that there are 5 men for each player off the board at the start of the game. Goals OK, just one more section. How do we tell Zillions the goal(s) of the game? Easy, use "-condition" statements (draw-condition (X O) stalemated) (win-condition (X O) (or (relative-config man n man n man) (relative-config man e man e man) (relative-config man ne man ne man) (relative-config man nw man nw man) ) ) The "draw-condition" statement tells us that if any side is "stalemated" (has no legal moves left), then the game is a draw. The "win-condition" statement is a little more complex, so let's go over it After "(win-condition" we see "(X O)", the names of the players which this condition applies to. Next comes an "(or". This tells Zillions that any of the following conditions indicates a win. In Tic-Tac-Toe, you can win by placing three of your men in a row. They can be vertical (n direction), horizontal (e direction), or along any of the two diagonals (ne and nw directions). The "relative-config" statements tell Zillions that any position where a "man" piece is north of another "man" piece which is north of a third "man" piece indicates a win. This line is repeated for the other three directions. That痴 it. Zillions supplies lots more commands and ways to generate moves, add sound effects and music to your games, and detect more complex winning goals, but you have the basics now. Look through the keywords section to learn more about these and other Zillions commands. And remember, there are a host of examples to look at included with your copy of Zillions of Games. Creating Variants Zillions of Games lets you create game variants with very little work. Let痴 say you wanted to create a variant of Tic-Tac-Toe where the first player to get three-in-a-row loses. The only changes you would need are in the game title, description and the goal of the game. Just add these lines to the sample ZRF file (variant (title "Losing Tic-Tac-Toe") (description "This is the same as normal TicTacToe, except that the object is NOT to get 3-in-a-row.\\ One side takes X's and the other side takes O's. Players alternate placing their marks on open spots. The object is to avoid getting three of your marks in a row horizontally, vertically, or diagonally. If there are no 3-in-a-rows, it's a cat's game (a draw).") (loss-condition (X O) (or (relative-config man n man n man) (relative-config man e man e man) (relative-config man ne man ne man) (relative-config man nw man nw man) ) ) ) You can see that we have changed the title and description to better describe the new variant, plus the win-condition has been changed to a loss-condition. Zillions will use the other sections from the main game description (like the board, pieces and so on) and just substitute the changed sections (title, description and loss-condition in this case). Simple variants can be created in a few minutes. <<Zillions of Games
https://w.atwiki.jp/ec-cube/pages/2.html
メニュー トップページ プラグイン紹介 まとめサイト作成支援ツール メニュー メニュー2 リンク @wiki @wikiご利用ガイド 他のサービス 無料ホームページ作成 無料ブログ作成 2ch型掲示板レンタル 無料掲示板レンタル お絵かきレンタル 無料ソーシャルプロフ ここを編集
https://w.atwiki.jp/tcube/pages/6.html
アーカイブ @wikiのwikiモードでは #archive_log() と入力することで、特定のウェブページを保存しておくことができます。 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/25_171_ja.html たとえば、#archive_log()と入力すると以下のように表示されます。 保存したいURLとサイト名を入力して"アーカイブログ"をクリックしてみよう サイト名 URL
https://w.atwiki.jp/ec-cube/pages/11.html
コメントプラグイン @wikiのwikiモードでは #comment() と入力することでコメントフォームを簡単に作成することができます。 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_60_ja.html たとえば、#comment() と入力すると以下のように表示されます。 名前 コメント
https://w.atwiki.jp/ec-cube/pages/5.html
まとめサイト作成支援ツールについて @wikiにはまとめサイト作成を支援するツールがあります。 また、 #matome_list と入力することで、注目の掲示板が一覧表示されます。 利用例)#matome_listと入力すると下記のように表示されます #matome_list
https://w.atwiki.jp/tcube/pages/9.html
関連ブログ @wikiのwikiモードでは #bf(興味のある単語) と入力することで、あるキーワードに関連するブログ一覧を表示することができます 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_161_ja.html たとえば、#bf(ゲーム)と入力すると以下のように表示されます。 #bf
https://w.atwiki.jp/cube1216/pages/7.html
アーカイブ @wikiのwikiモードでは #archive_log() と入力することで、特定のウェブページを保存しておくことができます。 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/25_171_ja.html たとえば、#archive_log()と入力すると以下のように表示されます。 保存したいURLとサイト名を入力して"アーカイブログ"をクリックしてみよう サイト名 URL
https://w.atwiki.jp/cube1216/pages/10.html
関連ブログ @wikiのwikiモードでは #bf(興味のある単語) と入力することで、あるキーワードに関連するブログ一覧を表示することができます 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_161_ja.html たとえば、#bf(ゲーム)と入力すると以下のように表示されます。 #bf
https://w.atwiki.jp/color-cube/pages/88.html
備忘録 http //smdn.jp/programming/tips/colorspaces/ 代表的な表色系の種類 RGB 加法混色の表色系、R(赤)、G(緑)、B(青)の三原色の強さによって色を表す CMY 減法混色の表色系、C(シアン)、M(マゼンタ)、Y(黄)の三原色の濃度によって色を表す CMYK 黒の発色をよくするためにCMYを拡張してK(Key plate)の濃度を加えた表色系 印刷物などの表色に用いられ、シアン・マゼンタ・黄・黒のインクの濃度を表す HSV (HSB) H(hue,色相)、S(saturation,彩度),V(value,明度)の三要素によって色を表す 色相は環状の値で、通常0度から360度で表す 彩度0%が無彩色、彩度100%が純色を表す HSL (HLS, HSI) HSV同様、H(hue,色相)、S(saturation,彩度),L(lightness/luminance,輝度)の三要素によって色を表す HSVと異なり、彩度に関わらず輝度0%が黒、輝度100%が白を表し、50%の場合純色を表す YCbCr Y(luma,輝度成分)とCb(blue-difference chroma,青の色差成分)、Cr(red-difference chroma,赤の色差成分)の三要素によって色を表す 動画処理などの映像技術に用いられる 変換式 RGB⇄CMY R, G, B, C, M, Yの値域が0〜255(8ビット)の場合。 C = 255 - R M = 255 - G Y = 255 - B R = 255 - C G = 255 - M B = 255 - Y RGB⇄CMYK R, G, B, C, M, Y, Kの値域が0〜255(8ビット)の場合。 RGB→CMYK K = min(255 - R, 255 - G, 255 - B) C = 255 - R - K M = 255 - G - K Y = 255 - B - K CMYK→RGB R' = 255 - C - K G' = 255 - M - K B' = 255 - Y - K R = max(0, R') // R' 0のときは0、そうでないときはR' G = max(0, G') B = max(0, B') RGB⇄HSV R, G, B, S, Vの値域が0〜255(8ビット)、Hの値域が0〜359の場合。 RGB→HSV max = Max(R, G, B) min = Min(R, G, B) max - min S = --------- max V = max Rが最大のとき G - B H = 60 * --------- + 0 max - min Gが最大のとき B - R H = 60 * --------- + 120 max - min Bが最大のとき R - G H = 60 * --------- + 240 max - min ここでH 0のとき H += 360 HSV→RGB 省略。 後述する実装例もしくはHSV色空間 - Wikipediaを参照。 RGB⇄YCbCr スケーリングされていないYCbCrの場合 (Y ) = (+0.299 +0.587 +0.114) (R ) (Cb) = (-0.299 -0.587 +0.866) (G ) (Cr) = (+0.701 -0.587 -0.114) (B ) (R ) = (+1 0 +1 ) (Y ) (G ) = (+1 -0.19421 -0.50937) (Cb) (B ) = (+1 +1 0 ) (Cr) スケーリングされたYCbCrの場合 R, G, Bの値域が0〜255(8ビット)、Yの値域が16〜235(8ビット)、Cb, Crの値域が16〜240(8ビット、128=色差なし)の場合。 (Y ) = (+0.257 +0.504 +0.098) (R ) ( 16) (Cb) = (-0.148 -0.291 +0.439) (G ) + (128) (Cr) = (+0.439 -0.368 -0.071) (B ) (128) (R ) = (+1.164 0 +1.596) (Y - 16) (G ) = (+1.164 -0.391 -0.813) (Cb - 128) (B ) = (+1.164 +2.018 0 ) (Cr - 128) 実装例 .NET FrameworkでのRGB→HSL変換 .NET FrameworkのColor構造体に用意されているメソッドGetHue(), GetSaturation(), GetBrightness()を用いることでRGBからHSLへの変換ができる。 なお、ドキュメントではこれらのメソッドはHSB表色系の値を返すように記述されているが、実際に返される値はHSL表色系になっている模様。 Imports System Imports System.Drawing Class Sample Public Shared Sub Main() For Each col As Color In New Color() { _ Color.Red, _ Color.Yellow, _ Color.Lime, _ Color.Cyan, _ Color.Blue, _ Color.Magenta, _ Color.Black, _ Color.Gray, _ Color.White, _ Color.FromArgb( hFF, hA0, hA0), _ Color.FromArgb( hFF, h80, h80), _ Color.FromArgb( hC0, h60, h60), _ Color.FromArgb( h80, h40, h40) _ } Console.Write("RGB({0 D3}, {1 D3}, {2 D3}) = ", col.R, col.G, col.B) Console.WriteLine("HSL({0,6 N2}, {1,7 P2}, {2,7 P2})", col.GetHue(), col.GetSaturation(), col.GetBrightness()) Next End Sub End Class 実行結果 RGB(255, 000, 000) = HSL(360.00, 100.00%, 50.00%) RGB(255, 255, 000) = HSL( 60.00, 100.00%, 50.00%) RGB(000, 255, 000) = HSL(120.00, 100.00%, 50.00%) RGB(000, 255, 255) = HSL(180.00, 100.00%, 50.00%) RGB(000, 000, 255) = HSL(240.00, 100.00%, 50.00%) RGB(255, 000, 255) = HSL(300.00, 100.00%, 50.00%) RGB(000, 000, 000) = HSL( 0.00, 0.00%, 0.00%) RGB(128, 128, 128) = HSL( 0.00, 0.00%, 50.20%) RGB(255, 255, 255) = HSL( 0.00, 0.00%, 100.00%) RGB(255, 160, 160) = HSL(360.00, 100.00%, 81.37%) RGB(255, 128, 128) = HSL(360.00, 100.00%, 75.10%) RGB(192, 096, 096) = HSL(360.00, 43.24%, 56.47%) RGB(128, 064, 064) = HSL(360.00, 33.33%, 37.65%) VB.NETでのRGB, CMYK, HSV相互変換の実装例 構造体宣言 それぞれのカラースペースでの色データを表す構造体を作成。 RGB ''' summary ''' RGB ''' /summary StructLayout(LayoutKind.Explicit) _ Public Structure Rgb Public Const IntensityMax As Byte = 255 Public Const IntensityMin As Byte = 0 Public Shared ReadOnly White As RGB Public Shared ReadOnly Black As RGB Shared Sub New() White = New RGB(IntensityMax, IntensityMax, IntensityMax) Black = New RGB(IntensityMin, IntensityMin, IntensityMin) End Sub FieldOffset(0) Public B As Byte FieldOffset(1) Public G As Byte FieldOffset(2) Public R As Byte Public ReadOnly Property RGB() As Integer Get Return CInt(R) * H10000 + CInt(G) * H100 + CInt(B) End Get End Property Public ReadOnly Property IsBlack() As Boolean Get Return (Me.R = IntensityMin AndAlso Me.G = IntensityMin AndAlso Me.B = IntensityMin) End Get End Property Public ReadOnly Property IsWhite() As Boolean Get Return (Me.R = IntensityMax AndAlso Me.G = IntensityMax AndAlso Me.B = IntensityMax) End Get End Property Public ReadOnly Property L() As Byte Get Return CByte(0.299F * R + 0.587F * G + 0.114F * B) End Get End Property Public Overloads Function Equals(ByVal rgb As RGB) As Boolean Return (rgb.R = Me.R AndAlso rgb.G = Me.G AndAlso rgb.B = Me.B) End Function Public Sub SetRGB(ByVal value As Integer) R = CByte(value And HFF0000 \ H10000) G = CByte(value And HFF00 \ H100) B = CByte(value And HFF) End Sub Public Function ToInt32() As Int32 Return R * H10000 Or G * H100 Or B End Function Public Function ToColor() As System.Drawing.Color Return System.Drawing.Color.FromArgb(R, G, B) End Function Private Sub New(ByVal r As Byte, ByVal g As Byte, ByVal b As Byte) Me.R = r Me.G = g Me.B = b End Sub End Structure CMYK ''' summary ''' CMYK ''' /summary StructLayout(LayoutKind.Explicit) _ Public Structure Cmyk Public Shared ReadOnly White As Cmyk Public Shared ReadOnly Black As Cmyk Public Const DensityMin As Byte = 0 Public Const DensityMax As Byte = 255 Shared Sub New() White = New Cmyk(0, 0, 0, DensityMin) Black = New Cmyk(0, 0, 0, DensityMax) End Sub FieldOffset(0) Public C As Byte FieldOffset(1) Public M As Byte FieldOffset(2) Public Y As Byte FieldOffset(3) Public K As Byte Public Overloads Function Equals(ByVal cmyk As Cmyk) As Boolean Return (cmyk.C = Me.C AndAlso cmyk.M = Me.M AndAlso cmyk.Y = Me.Y AndAlso cmyk.K = Me.K) End Function Private Sub New(ByVal c As Byte, ByVal m As Byte, ByVal y As Byte, ByVal k As Byte) Me.C = c Me.M = m Me.Y = y Me.K = k End Sub End Structure HSV ''' summary ''' HSV ''' /summary StructLayout(LayoutKind.Explicit) _ Public Structure Hsv Public Shared ReadOnly White As Hsv Public Shared ReadOnly Black As Hsv Public Const HueMin As Short = 0 Public Const HueMax As Short = 359 Public Const SaturationMin As Byte = 0 Public Const SaturationMax As Byte = 255 Public Const ValueMin As Byte = 0 Public Const ValueMax As Byte = 255 Shared Sub New() White = New Hsv(0, 0, ValueMax) Black = New Hsv(0, 0, ValueMin) End Sub FieldOffset(0) Public H As Short FieldOffset(2) Public S As Byte FieldOffset(3) Public V As Byte Public Overloads Function Equals(ByVal hsv As Hsv) As Boolean Return (hsv.H = Me.H AndAlso hsv.S = Me.S AndAlso hsv.V = Me.V) End Function Private Sub New(ByVal h As Short, ByVal s As Byte, ByVal v As Byte) Me.H = h Me.S = s Me.V = v End Sub End Structure ColorConverter 変換メソッドとその他のユーティリティメソッドをもったクラスを作成。 ''' summary ''' 色空間の変換 ''' /summary Public Class ColorConverter ''' summary ''' 三つの要素の内、もっとも大きいものを取得する。 ''' /summary Private Shared Function GetGreatestValue(ByVal x As Byte, ByVal y As Byte, ByVal z As Byte) As Byte If x y Then If y z Then Return z Else Return y End If ElseIf x z Then If z y Then Return y Else Return z End If Else Return x End If End Function ''' summary ''' 三つの要素の内、もっとも小さいものを取得する。 ''' /summary Private Shared Function GetSmallestValue(ByVal x As Byte, ByVal y As Byte, ByVal z As Byte) As Byte If y x Then If z y Then Return z Else Return y End If ElseIf z x Then If y z Then Return y Else Return z End If Else Return x End If End Function ''' summary ''' HSVからRGBへの変換 ''' /summary Public Shared Function ToRgb(ByVal hsv As Hsv) As Rgb Dim rgb As New rgb() If hsv.S = 0 Then rgb.R = hsv.V rgb.G = hsv.V rgb.B = hsv.V Else Const hueMax As Single = CSng(hsv.HueMax) Const saturationMax As Single = CSng(hsv.SaturationMax) Dim ht As Integer = hsv.H * 6 Dim d As Single = CSng(ht Mod hsv.HueMax) Dim t1 As Byte = CByte(hsv.V * (saturationMax - hsv.S) / saturationMax) Dim t2 As Byte = CByte(hsv.V * (saturationMax - hsv.S * d / hueMax) / saturationMax) Dim t3 As Byte = CByte(hsv.V * (saturationMax - hsv.S * (hueMax - d) / hueMax) / saturationMax) Select Case ht \ hsv.HueMax Case 0 rgb.R = hsv.V rgb.G = t3 rgb.B = t1 Case 1 rgb.R = t2 rgb.G = hsv.V rgb.B = t1 Case 2 rgb.R = t1 rgb.G = hsv.V rgb.B = t3 Case 3 rgb.R = t1 rgb.G = t2 rgb.B = hsv.V Case 4 rgb.R = t3 rgb.G = t1 rgb.B = hsv.V Case Else rgb.R = hsv.V rgb.G = t1 rgb.B = t2 End Select End If Return rgb End Function ''' summary ''' CMYKからRGBへの変換 ''' /summary Public Shared Function ToRgb(ByVal cmyk As Cmyk) As Rgb Dim rgb As New rgb() Dim r As Integer = cmyk.DensityMax - (cmyk.C + cmyk.K) Dim g As Integer = cmyk.DensityMax - (cmyk.M + cmyk.K) Dim b As Integer = cmyk.DensityMax - (cmyk.Y + cmyk.K) If r 0 Then rgb.R = 0 Else rgb.R = CByte(r) If g 0 Then rgb.G = 0 Else rgb.G = CByte(g) If b 0 Then rgb.B = 0 Else rgb.B = CByte(b) Return rgb End Function ''' summary ''' RGBからHSVへの変換 ''' /summary Public Shared Function ToHsv(ByVal rgb As Rgb) As Hsv Dim hsv As New Hsv() Dim max As Short = GetGreatestValue(rgb.R, rgb.G, rgb.B) Dim min As Short = GetSmallestValue(rgb.R, rgb.G, rgb.B) Dim d As Single = CSng(max - min) hsv.V = CByte(max) If d = 0.0 Then hsv.S = 0 Else hsv.S = CByte(d * 255.0F / CSng(max)) End If If hsv.S = 0 Then hsv.H = 0 Else Dim rt As Short = max - CShort(rgb.R * 60.0F / d) Dim gt As Short = max - CShort(rgb.G * 60.0F / d) Dim bt As Short = max - CShort(rgb.B * 60.0F / d) If rgb.R = max Then hsv.H = bt - gt ElseIf rgb.G = max Then hsv.H = 120S + rt - bt Else hsv.H = 240S + gt - rt End If If hsv.H 0 Then hsv.H += 360S End If Return hsv End Function ''' summary ''' CMYKからHSVへの変換 ''' /summary Public Shared Function ToHsv(ByVal cmyk As Cmyk) As Hsv Return ToHsv(ToRgb(cmyk)) End Function ''' summary ''' RGBからCMYKへの変換 ''' /summary Public Shared Function ToCmyk(ByVal rgb As Rgb) As Cmyk Dim cmyk As New cmyk() cmyk.K = GetSmallestValue(cmyk.DensityMax - rgb.R, cmyk.DensityMax - rgb.G, cmyk.DensityMax - rgb.B) cmyk.C = cmyk.DensityMax - rgb.R - cmyk.K cmyk.M = cmyk.DensityMax - rgb.G - cmyk.K cmyk.Y = cmyk.DensityMax - rgb.B - cmyk.K Return cmyk End Function ''' summary ''' HSVからCMYKへの変換 ''' /summary Public Shared Function ToCmyk(ByVal hsv As Hsv) As Cmyk Return ToCmyk(ToRgb(hsv)) End Function End Class C#でのYCbCr→RGB変換の実装例 この例でyuvはYUV422フォーマット(Y0CbY1Crの順)で格納されたピクセルへのbyte*型ポインタ、bgrはBGRの順で格納されるピクセルへのbyte*型ポインタを表す。 var y0 = +1.164f * (*(yuv++) - 16); var cb = (*(yuv++) - 128); var y1 = +1.164f * (*(yuv++) - 16); var cr = (*(yuv++) - 128); var db = (+2.018f * cb ); var dg = (-0.391f * cb + -0.813f * cr); var dr = ( +1.596f * cr); (bgr++) = (byte)(y0 + db); (bgr++) = (byte)(y0 + dg); (bgr++) = (byte)(y0 + dr); (bgr++) = (byte)(y1 + db); (bgr++) = (byte)(y1 + dg); (bgr++) = (byte)(y1 + dr); http //imagingsolution.blog107.fc2.com/blog-entry-247.html
https://w.atwiki.jp/color-cube/pages/131.html
③生存分析 ハザード:瞬間死亡率 ハザード比 比例ハザード性:ハザード比一定 調整ハザード ④ロジスティック回帰分析 オッズの対数→直線的低下 オッズ→指数的低下 確率→S字的低下 調整オッズ 人口相対危険度(population relative risk; PRR) http //ds.cc.yamaguchi-u.ac.jp/~tiiki/11_20.pdf http //d.hatena.ne.jp/NATROM/20120324 http //commons.bcit.ca/math/faculty/david_sabo/apples/math2441/section8/oddsratio/oddsratio.htm http //www.med.kindai.ac.jp/pubheal/kyouiku/2013_38.pdf http //ganjoho.jp/data/professional/statistics/backnumber/2007/DATA18.PDF Rate Ratio(人年法)とRiskRatio(累積) Relative RiskはRate Ratio、RiskRatio、さらにOdds Ratioの全てをさす語 www.jspe.jp/education/files/jspe_kogi.ppt 過剰相対リスク:Excess Relative Risk RR-1 http //tamakisono.blogspot.jp/2012/05/excess-relative-risk.html SIRとSMR http //ncrp.ncc.go.jp/file/seibi/tebiki/tebiki_s_4_2_070518.pdf 代表値と散布度 代表値:平均値(算術・幾何・調和・加重),中央値(パーセンタイル),最頻値 散布度:範囲(最大値,最小値),四分位範囲,標準偏差(分散の平方根),分散(偏差の平方和) 最大値・最小値 95%・5% 外れ値 箱ひげ図 平均値±標準偏差(標準誤差) 中央値(50%)±25%,75% Zスコア(平均値0,標準偏差1) Zスコア(中央値0,四分位範囲1) 変動係数(標準偏差/平均値) 母数と統計量 母集団:母数 標本:統計量 度数,相対度数 累積度数,累積相対度数 ヒストグラム,度数多角,度数分布曲線 離散変数 連続変数 度数分布曲線 確率分布曲線 確率密度分布曲線 累積度数分布曲線 分布曲線 散布図:量×量 ドットプロット図(プロット図):質×量 分割表(クロス表):質×質 相関係数 ピアソン スピアマン 決定係数 オッズ比 ロジスティック回帰 比例ハザード回帰(コックス回帰) 回帰 単回帰 重回帰 線形回帰 対数変換後 逆数変換後 非線形回帰 回帰係数 回帰分析 独立変数:説明変数,予測変数 従属変数:目的変数,基準変数 従属変数=切片+回帰係数×独立変数+残差=従属変数の予測値+残差 従属変数の予測値=切片+回帰係数×独立変数 残差=従属変数-従属変数の予測値 残差:データのプロット点から縦軸に平行に回帰直線に引いた線の長さ 回帰直線:どのデータに対しても残差が小さくなるようにするために、残差の分散が最小になるように切片と傾き(回帰係数)を決めた直線 回帰係数:独立変数と従属変数の相関係数×(従属変数の標準偏差/独立変数の標準偏差) 切片:従属変数の平均値-回帰係数×独立変数の平均値 残差 誤差 偏差 <単回帰> 相関係数(r) 従属変数と、1つの独立変数の相関係数 回帰係数 従属変数と、1つの独立変数で単回帰分析を行った場合の回帰係数 独立変数が1だけ変化した場合に、従属変数の予測値は回帰係数だけ変化 標準(化)回帰係数:β係数 各変数をその変数の標準偏差で除算してから単回帰分析を行った場合の回帰係数 独立変数が独立変数の1標準偏差だけ変化した場合に、従属変数の予測値は標準(化)回帰係数×従属変数の1標準偏差だけ変化 独立変数が1つの場合は、独立変数の標準(化)回帰係数=独立変数と従属変数との相関係数 決定係数 従属変数の分散=従属変数の予測値の分散+残差の分散 決定係数=従属変数の予測値の分散/従属変数の分散 =1-残差の分散/従属変数の分散 =(従属変数の分散-残差の分散)/従属変数の分散 決定係数1:従属変数の予測値=従属変数 決定係数0:従属変数の予測値=切片=従属変数の平均値(独立変数に関わらず一定) (相関係数0→回帰係数0→決定係数0) 重相関係数(R) 従属変数と、従属変数の予測値の相関係数 重相関係数^2=決定係数(R二乗) 重相関係数=√(決定係数) 独立変数が1つの場合は、従属変数と従属変数の予測値の相関係数=独立変数と従属変数との相関係数より、 重相関係数(R)=相関係数(r)より、決定係数(R二乗)=重相関係数^2=相関係数^2 <重回帰分析> 相関係数(r) 従属変数と、2つ以上の独立変数の相関係数 偏回帰係数 従属変数と、2つ以上の独立変数で重回帰分析を行った場合の回帰係数 独立変数が2つ以上の場合、他の独立変数の影響を除いた時に、 独立変数が1だけ変化した場合に、従属変数の予測値は回帰係数だけ変化 標準(化)偏回帰係数 各変数をその変数の標準偏差で除算してから重回帰分析を行った場合の回帰係数 独立変数が2つ以上の場合、他の独立変数の影響を除いた時に、 独立変数が独立変数の1標準偏差だけ変化した場合に、従属変数の予測値は標準(化)回帰係数×従属変数の1標準偏差だけ変化 独立変数が2つ以上の場合は、各独立変数の標準(化)編回帰係数≠各独立変数と従属変数との相関係数 従属変数に対する、それぞれの独立変数の影響の強さを比較可能 独立変数間の相関関係がほとんどない場合、標準(化)偏回帰係数が大きい独立変数の方が、従属変数に対する影響が大きい 独立変数間の相関関係が強い場合、多重共線性の問題が生じる 重決定係数 従属変数の分散=従属変数の予測値の分散+残差の分散 重決定係数=従属変数の予測値の分散/従属変数の分散 重相関係数(R) 従属変数と、従属変数の予測値の相関係数 重相関係数^2=決定係数(R二乗) 重相関係数=√(重決定係数) 自由度調整済みの決定係数 独立変数の個数が増加すると、一般に決定係数も増大するため、独立変数の個数に応じた調整が必要 通常の決定係数(重決定係数)は、予測に有効でない独立変数の追加でも増加または普遍 自由度調整済みの決定係数は、予測に有効でない独立変数の追加により減少:追加した独立変数が有効かどうかの指標になる 決定係数 http //en.wikipedia.org/wiki/Coefficient_of_determination http //ja.wikipedia.org/wiki/%E6%B1%BA%E5%AE%9A%E4%BF%82%E6%95%B0 http //www.jstor.org/discover/10.2307/2683704?uid=3738328 uid=2134 uid=2 uid=70 uid=4 sid=21101892800873 AR http //en.wikipedia.org/wiki/Attributable_risk http //en.wikipedia.org/wiki/Attributable_risk_percent オッズとロジットとロジスティック関数 O=P/(1-P) P=O/(1+O) OR=O1/O2={P/(1-P)}/{Q/(1-Q)}={P(1-Q)}/{(1-P)Q} O1→0 OR→0 O2→0 OR→∞ logit P=log {P/(1-P)}=log P-log (1-P) logit Q=log {Q/(1-Q)}=log Q-log (1-Q) 確率を変数とするロジット関数は、オッズの対数に等しい。 logit P-logit Q={log P-log (1-P)}-{log Q-log (1-Q)}=log {P/(1-P)}-log {Q/(1-Q)}=log [{P/(1-P)}/{Q/(1-Q)}] オッズ比の対数をとると、2つの確率のロジットの差に等しい。 ロジステック関数:N=K/[1+exp{rK(t0-t)}]において、N=y,r=a,K=1,t0=0,t=xとした、 シグモイド関数:y=1/{1+exp(-ax)}において、a=1とした、 標準シグモイド関数:y=1/{1+exp(-x)}=exp(x)/{exp(x)+1} p=O/(O+1)=exp(log O)/{exp(log O)+1}であり、log O=logit pより、 p=exp(log O)/{exp(log O)+1}=exp(logit p)/{exp(logit p)+1} ロジット関数はロジスティック関数(標準シグモイド関数)の逆関数で、ロジスティック回帰分析でオッズ比は重要な意味を持つ。 P=ある事象の確率 logit P=確率Pのロジット p/(1-p)=オッズ logit P=log {P/(1-P)}:ロジット=オッズの対数 y=1/{1+e^(-x)}⇔x=log{y/(1-y)} 標準シグモイド関数(ロジステック関数)⇔ロジット関数 y=1/{1+e^(-x)}={tanh(x/2)+1}/2 http //ja.wikipedia.org/wiki/%E3%82%AA%E3%83%83%E3%82%BA%E6%AF%94 http //ja.wikipedia.org/wiki/%E3%83%AD%E3%82%B8%E3%83%83%E3%83%88 http //ja.wikipedia.org/wiki/%E3%83%AD%E3%82%B8%E3%82%B9%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E5%9B%9E%E5%B8%B0 正規分布:確率密度関数 exp(-x^2) N(μ,σ^2)=1/sqr(2πσ^2)・exp{-(x-μ)^2/2σ^2} N(0,1)=1/sqr(2π)・exp{-x^2/2} 正規分布:累積分布関数 プロビットの逆関数 プロビット(Probit):正規分布累積関数(累積正規分布関数)の逆関数