Moving, shrinking, expanding triangle by a fixed amount

How can I write a program in Matlab to move a centre ( C ) of triangle to right or left and to shrink/expand its width (L-R) by a fixed amount?

2 Comments

If you know the initial coordinates, simple addition and multiplication will work. It's trivial. Not sure what part you're unsure of - the math or the programming. And not sure why you tagged this as fuzzy membership.
@Image Analyst: Actually I want to optimize triangular fuzzy MFs using PSO with the logic mentioned in my question. That's why I tagged this as fuzzy membership.

Sign in to comment.

Answers (1)

Read about Affine Transofrmations.
A =rand(3,2) ; % A random triangle
patch(A(:,1),A(:,2),'r')
% Move center
for i = 1:10
C = rand(1,2) ;
patch(A(:,1)+C(1),A(:,2)+C(2),'r')
drawnow
endfor
title('Center moved')
% Shrinking
Cx = 1/2 ; Cy = 1/2 ;
C = [Cx 0 ; 0 Cy ] ;
B = (A-mean(A))*C+mean(A) ;
figure
patch(A(:,1),A(:,2),'r')
hold on
patch(B(:,1),B(:,2),'b')
title('Shrinking')
% Expanding
Cx = 2 ; Cy = 2 ;
C = [Cx 0 ; 0 Cy ] ;
B = (A-mean(A))*C+mean(A) ;
figure
patch(B(:,1),B(:,2),'b')
hold on
patch(A(:,1),A(:,2),'r')
title('expaning')

Categories

Find more on Fuzzy Logic Toolbox in Help Center and File Exchange

Asked:

on 15 Jun 2020

Answered:

on 17 Jun 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!