macsurf an early nurbs shiphull design system: a historical note

2
Short communication MacSurf 1 an early NURBS shiphull design system: a historical note Andrew Mason * Formation Design Systems Pty Ltd, PO Box 1293, Fremantle, WA 6959, Australia I ®rst became aware of the work of Pierre Be Âzier in 1981 while engaged as a contract programmer in Saudi Arabia. I had taken with me to Saudi Arabia an early personal compu- ter and a copy of the second edition of `Principles of Inter- active Computer Graphics' by Newman and Sproull [1], with the intention of ®lling in my spare time by better educating myself in the subject of three-dimensional computer graphics. I had always had an interest in boat and ship design and can recall asking my mathematics teacher as a 13-year old whether there was a way of mathematically de®ning the hull surface of a sailing boat. At the time he had no answer for me, and it remained a dif®cult exercise in technical drawing for the next few years. When I stumbled across the chapter on surfaces in Newman and Sproull, however, I immedi- ately saw the solution to the problem I had puzzled over years before. Be Âzier's logic regarding the use of a control point net was appealing in its simplicity; and I was able to quickly write a small program to produce a Be Âzier surface, followed by an implementation of a simple B-spline surface. These efforts may not have progressed further had it not been for a chance meeting on my return to Australia in 1984. I happened to meet Richard MacFarlane, the owner of a company named Windrush Yachts, which had branched out into the manufacture of windsurfers. They had commenced a project in house for the design and manufac- ture of these boards using a CAD/CAM system, but had not progressed far with the design software. When I showed Richard the rudimentary surface design software I had writ- ten, he asked if I would be interested in writing a dedicated design system for them. I considered his offer carefully, but felt that there might be a broader market for such a program, particularly amongst yacht designers and builders of small aluminum and steel workboats. As a result, I negotiated an arrange- ment where I would write a program for Windrush for mini- mal fees, but would retain all copyrights to the code. This allowed me to sell freely to yacht designers and naval archi- tects, although at this point I had done no market research to see if there were any competitors or a market for the program. At the time the capabilities of personal computers were far below what they are today. I was aware that I needed to provide a user interface that allowed computer neophytes to use the design program without dif®culty, and that a high resolution graphics screen was desirable. It was clear that surface data structures would eat up memory, so a large memory address space was desirable. Although these char- acteristics were available on some of the early UNIX work- stations, the DOS based PCs available failed miserably on these criteria. Fortunately, in the month I was evaluating operating systems and computer hardware, a new computer was released onto the market. The Macintosh, although small with a black and white screen, had an elegant user interface, a bit-mapped screen, a 68000 processor with a large memory address space and a completely new to me, anyway) input device, the mouse. Combined with an excel- lent development environment and a high level compiled language Pascal), the Mac seemed the obvious choice for a low cost, high quality computer. Once the hardware was selected, I felt it was time to ®nd out how the rest of the world was tackling the problem of hull design with computers. I visited the technical library of the local university and searched the fairly limited range of journals available. I found several references to the ®tting and fairing of hull lines, but only one reference to the use of Be Âzier or B-spline surfaces for hull design. This was a paper by Dave Rogers [2] which recommended an approach which seemed to be completely different to that commonly used in the marine industry at the time. On reading it, I found the logic to be sound and the recommendations for the use of a small number of surfaces with a small number of control points to be in agreement with the conclusions I had already reached. This was suf®cient for me to feel that I was on the right track. By the end of 1984 I had been able to program the ®rst version of MacSurf. Even 16 years later, the ®rst version looks remarkably similar to today's program and contains Computer-Aided Design 34 2002) 545±546 COMPUTER-AIDED DESIGN 0010-4485/02/$ - see front matter q 2002 Elsevier Science Ltd. All rights reserved. PII: S0010-448501)00125-7 www.elsevier.com/locate/cad 1 MacSurf was renamed MaxSurf about 10 years ago when it became available on multiple platforms. * Tel.: 161-8-9335-1522; fax: 161-8-9335-1526. E-mail address: [email protected] A. Mason).

Upload: andrew-mason

Post on 02-Jul-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MacSurf an early NURBS shiphull design system: a historical note

����� ���������

������ � � ����� ����� ������� ���� ������� � �������� ���

����� �����

��������� ���� ����� ��� ���� �� ��� ����� �������� �� ����� ���������

� ���� ����� ����� � ��� ���! � "���� ��#$�� �%&�

���� ������ �� � ������� ���������� ���� ��� �' �

��� ��!� ��� �� �� ���� ��� � � ����� ������� �����(

��� �� � ���� � ��� ����� ���� � )"������ � ����(

���*� +������� ,������- � ����� �� ������� .�/0

��� ��� ���� � ���� �� ����� ��� � �����

������� ����� ��� �� 1��� � �����(�������

�������� �������'

� ��� ������ ��� � ������ ��� �� ��� ���� ��

�� ������ ��!� �� ���������� ������� �� � �2(���� ���

������� ����� ��� � ��� � ������������� ���� ��� ����

��� ��� � � ���� ���' �� ��� ��� �� ��� � ����� ��

��0 �� � ������ � � ����� �3����� ������� �����

�� ��� �3� �� �����' 4�� � ���� ��� ������ ��� �������

� ��� ���� ����� �� �������0 ����*��0 � ����(

����� ��� ��� ������ �� ��� ��� ��� � ��� ��$$��� �*��

����� � ���' ��#$��-� ���� ������� ��� ��� � � ������

��� �� ��� ������� �� �������5 �� � ��� � �� ��

6��!�� ���� � ����� ������� �� ������� � ��#$�� ��� ���0

������� � � ���������� � � ����� �(���� ��� ���'

7���� � ���� ��� �� ��*� ���������� ������ ��� � ��

�� �� � ����� ����� � �� ����� �� �������� �%&8'

� ������� �� ���� ������ ���9�����0 ��� ���� � �

������ ���� 4����� :�����0 ���� ��� ������

��� �� ��� ��� ������ � ����� ���' 7��� ���

�������� � ���1��� ����� �� ��� ���� �� ��� ��(

���� � ����� ����� ��� � +�;<+�� ������0 �� ��� ��

���������� �� ��� ��� ���� �� �����' 4�� � ������

������ ��� ��������� ��� ��� ���� �� ����� � ��� ���(

��0 �� ��!�� � ����� � �������� ���� � ��������

���� ������ �� ����'

� �������� �� � �� ���� ����0 �� ��� ���� ����� ����

� � ������ ���!�� �� ���� � �������0 �����������

������ ����� ������� �� ������ � ����� ������

�� ����� ���! ����' �� � ������0 � �������� � ������(

��� ����� � ����� ���� � ������� �� 4����� �� �(

��� ���0 �� ����� ���� ��� ��������� �� ��� ����' 7��

������� �� �� ���� ����� �� ����� ������� �� �*�� ����(

�����0 �������� �� ��� ��� � ��� ��� � ���!�� �������� ��

��� ����� ���� �� ���������� �� � ���!�� �� ���

�������'

�� ��� ��� ��� ���� ���� � ������� ��������� ����

�� ���� ���� ���� ��� �����' � ��� ����� ���� � ����� ��

���*�� � ���� ��� ��� ���� ������� �������� �������� ��

��� ��� ���� ������� ������ � ������0 �� ���� � ���

�������� ������� ����� ��� ����� ��' �� ��� ����� ����

��� ��� ���� ���������� ����� ��� �� ������0 �� � �����

������ ������� ����� ��� ����� ��' �������� ����� ����(

��������� ���� �*��� �� � ���� � ��� ����� ���= ���!(

������0 ��� ;>� ���� "+� �*��� �� ���� ����� �� �

����� ������'

9���������0 ��� ���� � ��� �*������ �������

������� �� �������� ��������0 � �� �������� ���

�������� ��� ��� ���!��' 7�� �������0 �������� �����

��� � ���! �� ���� �����0 ��� � ������ ���� ��� ���0

� �(������ �����0 � ?&@@@ ��������� ��� � �����

������ ������� ����� �� � ���������� �� A�� ��0

�����B ��� ��*��0 ��� �����' +�� �� ��� � �3���(

��� ��*������� �*����� �� � ��� ��*�� �������

������� A"�����B0 ��� ��� ������ ��� � *��� ����� ��

� ��� ����0 ��� 6����� ��������'

>�� ��� �������� ��� ��������0 � ��� � ��� ��� �� ��

��� ��� ��� ���� � ��� ����� ��� ���!�� ��� ��� ��� �

���� ���� ��� ���������' � *���� ��� ������� � ���� �

��� ����� �*����� �� �������� ��� ���� ����� ���� �

1������ �*��� ��' � ��� ��*���� �� ������ �� ��� ����

�� ��� � ���� ���0 �� ��� �� �� ����� �� ��� ��� �

��#$�� �� �(���� ��� ���� �� ���� ����' 7�� ��� � �����

� ;�*� ������ .C/ ���� ���������� � �������� ����

������ �� � ���������� � ���� �� ���� ������� ����

��� ���� ������ �� ��� ���' > ����� �0 � ��� ���

���� �� � ���� �� ��� ������������ �� ��� ��� � �

����� �� �� � ��� ���� ��� � ����� �� �� � ������

���� �� � �������� ��� ��� �������� � ��� �������

�������' 7�� ��� �� ���� �� �� �� ��� ���� � ��� � ���

���� ����!'

�� ��� �� � �%&8 � ��� �� � �� �� ������� ��� ����

*���� � ������ ' D*� �? ����� �����0 ��� ���� *����

���!� �����!� �� ����� �� �����-� ������� �� �����

+�������(���� ;��� 28 AC@@CB E8EFE8?

�������������� ���

@@�@(88&E<@C<G ( ��� ��� ������ � C@@C D���*�� ����� H��' ��� ����� �����*��'

"��� �@@�@(88&EA@�B@@�CE(I

���'����*��'���<������<���

� ������ ��� ������ ��3��� � ��� �@ ����� ��� ��� � �����

�*��� �� � ������� ���� ����'

� 7��'� �?�(&(%22E(�ECC5 �3� �?�(&(%22E(�EC?'

!���� ������" ����J ������'��� A�' ����B'

Page 2: MacSurf an early NURBS shiphull design system: a historical note

���� � ��� ��1�� �����' � ;���� �� �%&80 � ���! ���

��� � ��� ����0 ��������� � ��!�� �� D����0 �� ����

��������� �� ��� �3 � ��� ��� ���� ����� �������

��� ���� K����' � ��� ���������� ��� �� ����� ��

����0 � ����*�� ������ �� �*� ��������5 �� ������ ���

��� ��� �� ��� ��� ���������$��� �������'

> �� �3� ���!��� ��� �%&E0 � ��� � �� �� *�� ���

���� ������ �� ���� � ��� � *��� ;�*� ������

������' L� ������ ������ �������� �� ���� ��� ��

����*�� � �� ����� ��� � �����0 �����������

�������� �� � ���� � ����� ���� � ��*�� � ���� �

����*� ��� �� ����� �� ��!� � �*� �����' >*�� ���

�����0 ;�*� ��� �� ���� �� � ����� ���� �� �������

6������ � ��� ��� ��� ������ �� �������� �� ����

��6��� �������� A)���� � �� � ���� ,������ ���!���(

��-B ��� �����0 ���� � �� ��*�� ��� ������ �� ���

�� ���� �� ��!� ������ � ����� �������'

��� �%&E ������ ��� ��� ��� ������� �� �������0

����� ��� ��� � � ���� � �������� �� � ������

�������� �� ���*�� ������� �� ��� ��*��� � ����

����' 4�� ��� �������� � 4���� %E0 � �����

��� �� �� � �� ��� ���� ������� � ���� ��� ��� � �

���� ���� "+' 4���� *����� � ������ 0 ������

��3��� � ��� �@ ����� ��� ��� � ����� �*��� �� �

������� ���� ����0 ���� �������� �%%I' ��3��� � ��

���� � ���� ��� �E@@ ������� �� ��*�� ���������

��������0 �� ��� �� ���� �� ��� ���� � ��� �

�������� � *������ ��� �������!��� �� ������-� +��

����' ���� ���������0 ��3��� 0 �������� ��� 9������

�� �������0 ��*� ������ �� ���� ��� ��� �(���� ��� ���

�� � �� ���� ������� �� ���� ����� ��� ���� ���(

���' 7�� ���! � "���� ��#$�� ��� ��� � ������� ����

� ��� ���'

����������

.�/ ����� 4�0 �������' "������ � ������*� �������� �������'

C� ��' ��� :��!� ��,���(L�� ���! +�����0 �%I%'

.C/ ������ ;9' �(���� +��*�� �� ��� ���� �� ��� L��� ;���0 ��

"�������� � ����D0 �+�L; II0 9��� ��������� ��������

� +������� ���� L��� ��� ��� ;����0 C?FCI ������ �� �%II0

������0 �������'

�# $���� % &��'���!���� ���� �( )�**�+ �(�,�(�E8?

���� ��� � ������ ����������� �� ����*����� � ��� ����� 4���� ����� �� ����� ������� ��� �������� ��������� �������� ���� ����' L� �� ��6���������� �� � ������� D���� ��� ��� ��� ��� �*� ����� � ��������� ���! ��������0 D���� �� ��� ����� D���������� �� �������� �� ��� 9������;��� �������' ����� ��� ��� ����������� � ��� ����� ���� ���� ���������� ��3��� �� � �������� 7������;������ � ��� ������'