public void escalaXYZ(double Sx, double Sy) { Transformacao4D matrizScale = new Transformacao4D(); matrizScale.atribuirEscala(Sx, Sy, 1.0); matriz = matrizScale.transformMatrix(matriz); }
public void escalaXYZPtoFixo(double escala, Ponto4D ptoFixo) { matrizGlobal.atribuirIdentidade(); matrizTmpTranslacao.atribuirTranslacao(ptoFixo.X, ptoFixo.Y, ptoFixo.Z); matrizGlobal = matrizTmpTranslacao.transformMatrix(matrizGlobal); matrizTmpEscala.atribuirEscala(escala, escala, 1.0); matrizGlobal = matrizTmpEscala.transformMatrix(matrizGlobal); ptoFixo.inverterSinal(); matrizTmpTranslacaoInversa.atribuirTranslacao(ptoFixo.X, ptoFixo.Y, ptoFixo.Z); matrizGlobal = matrizTmpTranslacaoInversa.transformMatrix(matrizGlobal); matriz = matriz.transformMatrix(matrizGlobal); }
/// <summary> /// Altera a escala do poligono ++ /// </summary> /// <param name="scale"></param> public void Scale(double scale) { var translX = this.Bbox.centerX; var translY = this.Bbox.centerY; var originTrans = new Transformacao4D(); originTrans.atribuirTranslacao(translX, translY, 0); var scaleTrans = new Transformacao4D(); scaleTrans.atribuirEscala(scale, scale, 1); var initialPositionTrans = new Transformacao4D(); initialPositionTrans.atribuirTranslacao(-translX, -translY, 0); var result = originTrans.transformMatrix(scaleTrans); result = result.transformMatrix(initialPositionTrans); this.transformacao = result.transformMatrix(this.transformacao); this.UpdateBBox(); }