Win32 API 日本語リファレンス
ホームUI.Wpf › MILMatrixF

MILMatrixF

構造体
サイズx64: 128 バイト / x86: 128 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
_11DOUBLE8+0+04x4 変換行列の第 1 行第 1 列の要素である。
_12DOUBLE8+8+84x4 変換行列の第 1 行第 2 列の要素である。
_13DOUBLE8+16+164x4 変換行列の第 1 行第 3 列の要素である。
_14DOUBLE8+24+244x4 変換行列の第 1 行第 4 列の要素である。
_21DOUBLE8+32+324x4 変換行列の第 2 行第 1 列の要素である。
_22DOUBLE8+40+404x4 変換行列の第 2 行第 2 列の要素である。
_23DOUBLE8+48+484x4 変換行列の第 2 行第 3 列の要素である。
_24DOUBLE8+56+564x4 変換行列の第 2 行第 4 列の要素である。
_31DOUBLE8+64+644x4 変換行列の第 3 行第 1 列の要素である。
_32DOUBLE8+72+724x4 変換行列の第 3 行第 2 列の要素である。
_33DOUBLE8+80+804x4 変換行列の第 3 行第 3 列の要素である。
_34DOUBLE8+88+884x4 変換行列の第 3 行第 4 列の要素である。
_41DOUBLE8+96+964x4 変換行列の第 4 行第 1 列の要素である。
_42DOUBLE8+104+1044x4 変換行列の第 4 行第 2 列の要素である。
_43DOUBLE8+112+1124x4 変換行列の第 4 行第 3 列の要素である。
_44DOUBLE8+120+1204x4 変換行列の第 4 行第 4 列の要素である。

各言語での定義

#include <windows.h>

// MILMatrixF  (x64 128 / x86 128 バイト)
typedef struct MILMatrixF {
    DOUBLE _11;
    DOUBLE _12;
    DOUBLE _13;
    DOUBLE _14;
    DOUBLE _21;
    DOUBLE _22;
    DOUBLE _23;
    DOUBLE _24;
    DOUBLE _31;
    DOUBLE _32;
    DOUBLE _33;
    DOUBLE _34;
    DOUBLE _41;
    DOUBLE _42;
    DOUBLE _43;
    DOUBLE _44;
} MILMatrixF;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MILMatrixF
{
    public double _11;
    public double _12;
    public double _13;
    public double _14;
    public double _21;
    public double _22;
    public double _23;
    public double _24;
    public double _31;
    public double _32;
    public double _33;
    public double _34;
    public double _41;
    public double _42;
    public double _43;
    public double _44;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MILMatrixF
    Public _11 As Double
    Public _12 As Double
    Public _13 As Double
    Public _14 As Double
    Public _21 As Double
    Public _22 As Double
    Public _23 As Double
    Public _24 As Double
    Public _31 As Double
    Public _32 As Double
    Public _33 As Double
    Public _34 As Double
    Public _41 As Double
    Public _42 As Double
    Public _43 As Double
    Public _44 As Double
End Structure
import ctypes
from ctypes import wintypes

class MILMatrixF(ctypes.Structure):
    _fields_ = [
        ("_11", ctypes.c_double),
        ("_12", ctypes.c_double),
        ("_13", ctypes.c_double),
        ("_14", ctypes.c_double),
        ("_21", ctypes.c_double),
        ("_22", ctypes.c_double),
        ("_23", ctypes.c_double),
        ("_24", ctypes.c_double),
        ("_31", ctypes.c_double),
        ("_32", ctypes.c_double),
        ("_33", ctypes.c_double),
        ("_34", ctypes.c_double),
        ("_41", ctypes.c_double),
        ("_42", ctypes.c_double),
        ("_43", ctypes.c_double),
        ("_44", ctypes.c_double),
    ]
#[repr(C)]
pub struct MILMatrixF {
    pub _11: f64,
    pub _12: f64,
    pub _13: f64,
    pub _14: f64,
    pub _21: f64,
    pub _22: f64,
    pub _23: f64,
    pub _24: f64,
    pub _31: f64,
    pub _32: f64,
    pub _33: f64,
    pub _34: f64,
    pub _41: f64,
    pub _42: f64,
    pub _43: f64,
    pub _44: f64,
}
import "golang.org/x/sys/windows"

type MILMatrixF struct {
	_11 float64
	_12 float64
	_13 float64
	_14 float64
	_21 float64
	_22 float64
	_23 float64
	_24 float64
	_31 float64
	_32 float64
	_33 float64
	_34 float64
	_41 float64
	_42 float64
	_43 float64
	_44 float64
}
type
  MILMatrixF = record
    _11: Double;
    _12: Double;
    _13: Double;
    _14: Double;
    _21: Double;
    _22: Double;
    _23: Double;
    _24: Double;
    _31: Double;
    _32: Double;
    _33: Double;
    _34: Double;
    _41: Double;
    _42: Double;
    _43: Double;
    _44: Double;
  end;
const MILMatrixF = extern struct {
    _11: f64,
    _12: f64,
    _13: f64,
    _14: f64,
    _21: f64,
    _22: f64,
    _23: f64,
    _24: f64,
    _31: f64,
    _32: f64,
    _33: f64,
    _34: f64,
    _41: f64,
    _42: f64,
    _43: f64,
    _44: f64,
};
type
  MILMatrixF {.bycopy.} = object
    _11: float64
    _12: float64
    _13: float64
    _14: float64
    _21: float64
    _22: float64
    _23: float64
    _24: float64
    _31: float64
    _32: float64
    _33: float64
    _34: float64
    _41: float64
    _42: float64
    _43: float64
    _44: float64
struct MILMatrixF
{
    double _11;
    double _12;
    double _13;
    double _14;
    double _21;
    double _22;
    double _23;
    double _24;
    double _31;
    double _32;
    double _33;
    double _34;
    double _41;
    double _42;
    double _43;
    double _44;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MILMatrixF サイズ: 128 バイト(x64)
dim st, 32    ; 4byte整数×32(構造体サイズ 128 / 4 切り上げ)
; _11 : DOUBLE (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; _12 : DOUBLE (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; _13 : DOUBLE (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; _14 : DOUBLE (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; _21 : DOUBLE (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; _22 : DOUBLE (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; _23 : DOUBLE (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; _24 : DOUBLE (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; _31 : DOUBLE (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; _32 : DOUBLE (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; _33 : DOUBLE (+80, 8byte)  qpoke st,80,値 / qpeek(st,80)  ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; _34 : DOUBLE (+88, 8byte)  qpoke st,88,値 / qpeek(st,88)  ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; _41 : DOUBLE (+96, 8byte)  qpoke st,96,値 / qpeek(st,96)  ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; _42 : DOUBLE (+104, 8byte)  qpoke st,104,値 / qpeek(st,104)  ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; _43 : DOUBLE (+112, 8byte)  qpoke st,112,値 / qpeek(st,112)  ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; _44 : DOUBLE (+120, 8byte)  qpoke st,120,値 / qpeek(st,120)  ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MILMatrixF
    #field double _11
    #field double _12
    #field double _13
    #field double _14
    #field double _21
    #field double _22
    #field double _23
    #field double _24
    #field double _31
    #field double _32
    #field double _33
    #field double _34
    #field double _41
    #field double _42
    #field double _43
    #field double _44
#endstruct

stdim st, MILMatrixF        ; NSTRUCT 変数を確保
st->_11 = 100
mes "_11=" + st->_11