Tree @3d5a4e82-a43d-42a1-b45b-3cdbad1db042/upstream/1.6.45+git20221125.1.7d76b2a (Download .tar.gz)
- ..
- common.i
- core.i
- dcmodule.i
- dialogs.i
- exceptions.i
- framesmodule.i
- freefuncs.i
- fx3d.i
- FX4Splitter.i
- FX7Segment.i
- FXAccelTable.i
- FXApp.i
- FXArrowButton.i
- FXBitmap.i
- FXBitmapFrame.i
- FXBitmapView.i
- FXBMPIcon.i
- FXBMPImage.i
- FXButton.i
- FXCanvas.i
- FXCheckButton.i
- FXChoiceBox.i
- FXColorBar.i
- FXColorDialog.i
- FXColorList.i
- FXColorRing.i
- FXColorSelector.i
- FXColorWell.i
- FXColorWheel.i
- FXComboBox.i
- FXComposeContext.i
- FXComposite.i
- FXCURCursor.i
- FXCursor.i
- FXDataTarget.i
- FXDC.i
- FXDCPrint.i
- FXDCWindow.i
- FXDebugTarget.i
- fxdefs.i
- FXDelegator.i
- FXDial.i
- FXDialogBox.i
- FXDict.i
- FXDirBox.i
- FXDirDialog.i
- FXDirList.i
- FXDirSelector.i
- FXDockBar.i
- FXDockHandler.i
- FXDockSite.i
- FXDockTitle.i
- FXDocument.i
- FXDragCorner.i
- FXDrawable.i
- FXDriveBox.i
- FXExtentd.i
- FXExtentf.i
- FXFileDialog.i
- FXFileDict.i
- FXFileList.i
- FXFileSelector.i
- FXFileStream.i
- FXFoldingList.i
- FXFont.i
- FXFontDialog.i
- FXFontSelector.i
- FXFrame.i
- FXGIFCursor.i
- FXGIFIcon.i
- FXGIFImage.i
- FXGLCanvas.i
- FXGLContext.i
- FXGLObject.i
- FXGLShape.i
- FXGLViewer.i
- FXGLVisual.i
- FXGradientBar.i
- FXGroupBox.i
- FXHeader.i
- FXHorizontalFrame.i
- FXICOIcon.i
- FXICOImage.i
- FXIcon.i
- FXIconDict.i
- FXIconList.i
- FXIconSource.i
- FXId.i
- FXImage.i
- FXImageFrame.i
- FXImageView.i
- FXInputDialog.i
- FXJPGIcon.i
- FXJPGImage.i
- FXKnob.i
- FXLabel.i
- FXList.i
- FXListBox.i
- FXMainWindow.i
- FXMat3d.i
- FXMat3f.i
- FXMat4d.i
- FXMat4f.i
- FXMatrix.i
- FXMDIButton.i
- FXMDIChild.i
- FXMDIClient.i
- FXMemoryBuffer.i
- FXMemoryStream.i
- FXMenuBar.i
- FXMenuButton.i
- FXMenuCaption.i
- FXMenuCascade.i
- FXMenuCheck.i
- FXMenuCommand.i
- FXMenuPane.i
- FXMenuRadio.i
- FXMenuSeparator.i
- FXMenuTitle.i
- FXMessageBox.i
- FXObject.i
- FXOptionMenu.i
- FXPacker.i
- FXPCXIcon.i
- FXPCXImage.i
- FXPicker.i
- FXPNGIcon.i
- FXPNGImage.i
- FXPoint.i
- FXPopup.i
- FXPPMIcon.i
- FXPPMImage.i
- FXPrintDialog.i
- FXProgressBar.i
- FXProgressDialog.i
- FXQuatd.i
- FXQuatf.i
- FXRadioButton.i
- FXRanged.i
- FXRangef.i
- FXRealSlider.i
- FXRealSpinner.i
- FXRecentFiles.i
- FXRectangle.i
- FXRegion.i
- FXRegistry.i
- FXReplaceDialog.i
- FXRGBIcon.i
- FXRGBImage.i
- FXRootWindow.i
- FXRuler.i
- FXRulerView.i
- FXScintilla.i
- FXScrollArea.i
- FXScrollBar.i
- FXScrollPane.i
- FXScrollWindow.i
- FXSearchDialog.i
- FXSeparator.i
- FXSettings.i
- FXShell.i
- FXShutter.i
- FXSize.i
- FXSlider.i
- FXSphered.i
- FXSpheref.i
- FXSpinner.i
- FXSplashWindow.i
- FXSplitter.i
- FXSpring.i
- FXStatusBar.i
- FXStatusLine.i
- FXStream.i
- FXStringDict.i
- FXSwitcher.i
- FXTabBar.i
- FXTabBook.i
- FXTabItem.i
- FXTable.i
- FXText.i
- FXTextField.i
- FXTGAIcon.i
- FXTGAImage.i
- FXTIFIcon.i
- FXTIFImage.i
- FXToggleButton.i
- FXToolBar.i
- FXToolBarGrip.i
- FXToolBarShell.i
- FXToolBarTab.i
- FXToolTip.i
- FXTopWindow.i
- FXTranslator.i
- FXTreeList.i
- FXTreeListBox.i
- FXTriStateButton.i
- FXURL.i
- FXVec2d.i
- FXVec2f.i
- FXVec3d.i
- FXVec3f.i
- FXVec4d.i
- FXVec4f.i
- FXVerticalFrame.i
- FXVisual.i
- FXWindow.i
- FXWizard.i
- FXXBMIcon.i
- FXXBMImage.i
- FXXPMIcon.i
- FXXPMImage.i
- handlers.i
- iconlistmodule.i
- icons.i
- ignore-message-handlers.rb
- image.i
- labelmodule.i
- layout.i
- listmodule.i
- macros.i
- markfuncs.i
- mdi.i
- menumodule.i
- README
- ruby-typemaps.i
- scintilla.i
- table-module.i
- text-module.i
- treelist-module.i
- ui.i
FXMat3f.i @3d5a4e82-a43d-42a1-b45b-3cdbad1db042/upstream/1.6.45+git20221125.1.7d76b2a — raw · history · blame
/***********************************************************************
* FXRuby -- the Ruby language bindings for the FOX GUI toolkit.
* Copyright (c) 2001-2009 by Lyle Johnson. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* For further information please contact the author by e-mail
* at "[email protected]".
***********************************************************************/
/// Single-precision 3x3 matrix
class FXMat3f {
public:
/// Default constructor
FXMat3f();
/// Copy constructor
FXMat3f(const FXMat3f& other);
/// Construct from scalar number
FXMat3f(FXfloat w);
/// Construct from components
FXMat3f(FXfloat a00,FXfloat a01,FXfloat a02,
FXfloat a10,FXfloat a11,FXfloat a12,
FXfloat a20,FXfloat a21,FXfloat a22);
/// Construct matrix from three vectors
FXMat3f(const FXVec3f& a,const FXVec3f& b,const FXVec3f& c);
/// Construct rotation matrix from quaternion
FXMat3f(const FXQuatf& quat);
%extend {
/// Indexing
const FXVec3f& __getitem__(FXint i) const {
if(i<0 || i>2) rb_raise(rb_eIndexError,"index %d out of bounds",i);
return (*self)[i];
}
FXVec3f& __setitem__(FXint i,const FXVec3d& other){
if(i<0 || i>2) rb_raise(rb_eIndexError,"index %d out of bounds",i);
(*self)[i]=other;
return (*self)[i];
}
/// Other operators
FXMat3f operator+(const FXMat3f& other) const { return (*self)+other; }
FXMat3f operator-(const FXMat3f& other) const { return (*self)-other; }
FXMat3f operator-() const { return -(*self); }
FXMat3f operator*(const FXMat3f& other) const { return (*self)*other; }
FXMat3f operator*(FXfloat x) const { return (*self)*x; }
FXMat3f operator/(FXfloat x) const {
if(x==0.0f) rb_raise(rb_eZeroDivError,"divided by 0");
return (*self)/x;
}
/// Multiply matrix and vector
FXVec3f operator*(const FXVec3f& other) const { return (*self)*other; }
/// Mutiply matrix and vector, for non-projective matrix
FXVec2f operator*(const FXVec2f& other) const { return (*self)*other; }
}
/// Set identity matrix
FXMat3f& eye();
/// Multiply by rotation of phi
FXMat3f& rot(FXfloat c,FXfloat s);
FXMat3f& rot(FXfloat phi);
/// Multiply by translation
FXMat3f& trans(FXfloat tx,FXfloat ty);
/// Multiply by scaling
FXMat3f& scale(FXfloat sx,FXfloat sy);
FXMat3f& scale(FXfloat s);
/// Determinant
FXfloat det() const;
/// Transpose
FXMat3f transpose() const;
/// Invert
FXMat3f invert() const;
};
|