\newcommand{\redcell}[2]{
\node[minimum width=3.0cm, minimum height=1.5cm,fill=cellred, text=white,text width=3.5cm, align=center, rounded corners=2ex, outer sep=0](#1) {#2};
}
+\tikzexternalenable
\begin{tikzpicture}
\small
\node[anchor=south, minimum width=\textwidth,minimum height=25mm, inner sep=0,fill=black!10, outer sep=0](thebar3) at (0,1.35) {};
% \draw [->, -stealth', thick]
% (software.north) edge (mechanics.south);
\end{tikzpicture}
+\tikzexternaldisable
\caption[Haptic rendering pipeline.]{Haptic rendering pipeline.}
\label{fig:hapticpath}
\end{figure}
\newcommand{\actuator}[3]{\node[x=1mm,y=1mm, fill=#3, text=white, circle, minimum size=1cm] at (#1) {#2};}
\newcommand{\vibrdot}[2]{\node[x=1mm,y=1mm, fill=#2, circle, minimum size=1mm] at (#1) {};}
+\tikzexternalenable
\begin{tikzpicture}
\draw[x=1mm,y=1mm, dotted] (0,20) grid (80,30);
\actuator{0,25}{a}{cellblue}
\node[x=1mm,y=1mm, anchor=center] () at (127.5,-5){Saltation or Cutaneous rabbit illusion};
\end{tikzpicture}
+\tikzexternaldisable
\caption[Tactile illusions: funneling and saltation.]{Examples of tactile illusions. Left: funneling, or phantom illusion; right: saltation or cutaneous rabbit illusion.}
\label{fig:illusions}
\end{figure}
Similar to programming languages, they have three levels: lexical, syntactic, and semantic.
\begin{figure}[b]
+ \tikzexternalenable
\begin{tikzpicture}
%\draw[loosely dotted] (0,-1) grid (17,1);
\draw[x=1mm,y=0.5mm, ultra thick]
(12,-10) -- (12,0);
\node[x=1mm,y=1mm, anchor=center] () at (153,-9){Shape};
\end{tikzpicture}
+ \tikzexternaldisable
\caption[Haptic vocabulary.]{Four parameters of the vibrotactile output vocabulary: frequency, amplitude, duration and shape.}
\label{fig:lexical}
\end{figure}
%For example, there are force models for springs, magnets, damping or other kinds of forces.
\begin{figure}[htb]
+\tikzexternalenable
\begin{tikzpicture}
%\draw[loosely dotted] (0,-1) grid (17,1);
\draw[x=0.5mm,y=0.5mm, ultra thick]
(56,0);
\node[x=1mm,y=1mm, anchor=center] () at (154,-13){Rhythm};
\end{tikzpicture}
+\tikzexternaldisable
\caption[Haptic phrases.]{Three examples of haptic phrases: frequency modulation, amplitude modulation and rhythm.}
\label{fig:syntactic}
\end{figure}
\newcommand{\smallredcell}[2]{
\node[minimum width=8mm, minimum height=4mm,fill=cellred, text=white,text width=8mm, align=center, rounded corners=1mm, outer sep=0](#1) {\scriptsize #2};
}
+ \tikzexternalenable
\begin{tikzpicture}
%\small
\matrix[row sep=1mm, column sep=10mm,inner sep=0, node distance=0, outer sep=0mm] (cells) {
\draw[<->, stealth-stealth, thick] (l3) -- (d3);
\end{tikzpicture}
+ \tikzexternaldisable
\caption[Mapping information with Tactons.]{Illustration of a semantic mapping between 3-parameters Tactons and a 3-level information, adapted from~\cite{brown06}. Three values of rhythm are mapped to three types of messages, three values of roughness are mapped to three degrees of importance, and three spatial locations are mapped to three values of delay.}
\label{fig:semantic}
\end{figure}
({4*\x*#1+4*#1},0);
}
}
+ \tikzexternalenable
\begin{tikzpicture}
\def\s{0.03}
\begin{scope}[] %Set A
% \node[x=1mm,y=1mm, anchor=center] () at (136,-36){Set E};
% \node[x=1mm,y=1mm, anchor=center] () at (160,-36){Set F};
\end{tikzpicture}
+ \tikzexternaldisable
\caption[6 pattern sets evaluated in Activibe.]{Visual representation of the 6 pattern sets we evaluated in two laboratory studies, and a longitudinal study.}
\label{fig:activibesets}
\end{figure}
\end{figure}
The first trial of each block used the largest difference for the chosen reference value.
-For example with a reference level of $0^\circ$ the other value was $180^\circ$.
+For example, with a reference level of $0^\circ$ the other value was $180^\circ$.
Then, the value decreased of $1.8dB$ after two good answers in a row, and increased of $1.8dB$ after a wrong answer.
-After 3 reveresals we reduced the increment/decrement to $1.2dB$ since participants went closer to the perception threshold.
+After 3 reversals we reduced the increment/decrement to $1.2dB$ since participants went closer to the perception threshold.
The block ended at the \nth{13} reversal.
We estimated the threshold by averaging the values corresponding to the last 10 reversals.
%Participants typically performed between 30 to 50 trials per block.
The Stimtac device version we used in this experiment is depicted on \reffig{fig:stimtac}.
The surface is $75 \times 40mm$, made of Copper-Beryllium, covered with a \emph{Filmolux® easy clear matt} plastic sheet.
36 piezo-electric ceramics are glued underneath.
-35 of them are actuated to vibrate the surface, anf the last one is used as a sensor to measure the vibration amplitude.
-The device was connected to a PC through USB, on which the experimentall application was running.
+35 of them are actuated to vibrate the surface, and the last one is used as a sensor to measure the vibration amplitude.
+The device was connected to a PC through USB, on which the experimental application was running.
A plastic cover, not visible on the picture, was placed over the surface to reduce the interactive surface to $70 \times 20mm$ to reduce the variability of amplitude and guide the user on a lateral movement.
\begin{figure}[htb]
\end{figure}
We instructed participants to use the index finger of their dominant hand only.
-They wore a noise cancelling headset to avoid gueses with audio cues.
+They wore a noise canceling headset to avoid guesses with audio cues.
We cleaned the surface with isopropyl alcohol before each block.
-To make sure participants felt the signal in both directions, we instructed them to perform at least 3 back-and-forth between the left and right zones of the surface.
+To make sure participants felt the signal in both directions, we instructed them to perform at least 3 back-and-forths between the left and right zones of the surface.
%Before each trial, the device measured the amplitude of vibration and adjusted the signal to ensure a consistent effect over each trial.
The experiment application showed a pressure bar and participants were instructed to remain in a specified range.
The experiment started with a training phase in which signals of different intensity were presented to participants.
-We presented them a low intensity signal to make sure they will be able to perform all 6 blocks.
+We presented them a low-intensity signal to make sure they will be able to perform all 6 blocks.
All the participants felt this signal.
-The application showed three visually identical items, representing the three configurations of the trial.
-Participants could switch between them with the \Space key, but could not go back to the previous ones.
-The current item was highligted, and we limited the exploration time for each item to $12s$.
+The application showed three visually identical items representing the three configurations of the trial.
+Participants could switch between them with the \Space key but could not go back to the previous ones.
+The current item was highlighted, and we limited the exploration time for each item to $12s$.
After exploring the three items, participants had to indicate which one presented the signal with the \keys{1} \keys{2} \keys{3} keys.
-Participants did not receive any feedback whether their answer was good or wrong.
+Participants did not receive any feedback regarding whether their answer was good or wrong.
12 participants took part of this experiment, all of them were right-handed, their mean age was $27.7$ years old, and none of them had a known tactile sensitivity issue.
Participants performed 2 sessions of 6 blocks with pauses between blocks and the two sessions happened on a different day.
\paragraph{Results and discussion}
In this analysis, we used 10 \textsc{Reversals} $\times$ 6 \textsc{Levels} $\times$ 12 \textsc{Levels} = 720 trials.
-The \reftab{tab:jndstimtac} shows the mean JND value and standard deviation for each reference level.
-The \reffig{fig:stimtacmarches} shows two representations of the results.
+\reftab{tab:jndstimtac} shows the mean JND value and standard deviation for each reference level.
+\reffig{fig:stimtacmarches} shows two representations of the results.
On the left, for each level the bars represent JND value.
%On the right, for each level the bars represent the absolute values of both the reference level and the JND.
On the right, for each level the bottom of the bars represent the reference level and the height of the bar is the JND value.
A Shapiro-Wilk normality test shows the data does not follow a normal distribution (\p{0.0001}).
We performed a boxcox correction ($\lambda=0.18$), however the data distribution remained not normal (\p{0.0001}).
-Therefore we analyzed our data with a Kruskal-Wallis rank sum test, which showed significant differences (\chisquares{5}{204.45})
-The post-hoc analysis with pairwise Wilcoxon rank sum tests shows two groups of reference levels with significant differences between the groups.
+Therefore we analyzed our data with a Kruskal-Wallis rank-sum test, which showed significant differences (\chisquares{5}{204.45})
+The posthoc analysis with pairwise Wilcoxon rank-sum tests shows two groups of reference levels with significant differences between the groups.
The difference between the JND and the \degr{0}, \degr{144}, and \degr{180} reference levels was significantly higher than with the \degr{36}, \degr{72} and \degr{104} (\p{0.0001} for all differences, except between \degr{72} and \degr{108} for which \p{0.05}).
%Shapiro-Wilk normality test
\paragraph{Definition}
-We took inspiration from this research topic to propose a definition of a \defword{Tactile Texture}~\cite{potier12}.
+We took inspiration from this research topic to propose a definition of tactile patterns and texture as follows~\cite{potier12,potier16}.
+
+\begin{definition}{Tactile pattern}
+ We define a \defword{tactile pattern} as a spatial or temporal sequence of shapes distinguishable from a background, periodic or not.
+\end{definition}
+
+%The order of magnitude of the shape size is lower than a finger size so that it cannot be considered as an object itself.
+
+\reffig{fig:tactilepattern} depicts examples of 1D tactile patterns of increased complexity.
+The first one is a \emph{constant} pattern, for which the device uses the same friction command over the whole surface.
+%It corresponds to the smooth configuration in Schellingerhout's classification.
+The second pattern is a \emph{step}.
+It corresponds to a frontier between two adjacent zones which have a different friction.
+It is the smallest building block we will use later for designing more complext patterns and textures.
+The third pattern is a \emph{shape}: a localized pattern distinct from the background.
+It has two steps so that the user can move through it.
+The fourth pattern is a \emph{field}, a regular repetition of a shape.
+With a sufficiently low size and high number of repetition, users are not able to count the item while exploring the surface.
+They rather have a sensation of roughness\fixme{REF?}.
+The fifth pattern is a \emph{gradient}, repetition of a shape, with a decreased size.
+Finally, the sixth pattern is a \emph{random} series of shapes.
+
+\begin{figure}[htb]
+ \definecolor{cellblue}{rgb} {0.17,0.60,0.99}
+ \def\dx{75}
+ \def\dy{40}
+ \def\scale{0.26mm}
+
+ \centering
+
+ \tikzexternalenable
+ \begin{tikzpicture}
+
+ \begin{scope}[]
+ \node[x=\scale,y=\scale, anchor=center] () at (\dx/2,-10){Constant};
+ \draw[x=\scale,y=\scale,color=black] (0,0) rectangle (\dx,\dy);
+ \end{scope}
+
+ \begin{scope}[xshift=3cm]
+ \pgfmathsetmacro{\x}{\dx/2}
+ \fill[x=\scale,y=\scale,color=cellblue] (0,0) rectangle (\x,\dy);
+ \node[x=\scale,y=\scale, anchor=center] () at (\dx/2,-10){Step};
+ \draw[x=\scale,y=\scale,color=black] (0,0) rectangle (\dx,\dy);
+ \end{scope}
+
+ \begin{scope}[xshift=6cm]
+ \pgfmathsetmacro{\x}{\dx/2}
+ \fill[x=\scale,y=\scale,color=cellblue] (\x-3,0) rectangle (\x+3,\dy);
+ \node[x=\scale,y=\scale, anchor=center] () at (\dx/2,-10){Shape};
+ \draw[x=\scale,y=\scale,color=black] (0,0) rectangle (\dx,\dy);
+ \end{scope}
+
+ \begin{scope}[xshift=9cm]
+ \def\n{8}
+ \def\dc{0.4}
+ \pgfmathsetmacro{\p}{\dx / (\n + \dc - 1)}
+ \pgfmathsetmacro{\w}{\dc*\p}
+ \pgfmathsetmacro{\nn}{\n-1}
+ \fill[x=\scale,y=\scale,color=cellblue] (0,0) rectangle (\w,\dy);
+ \foreach \i in {1,...,\nn} {
+ \pgfmathsetmacro{\d}{\i*\p}
+ \fill[x=\scale,y=\scale,color=cellblue] (\d,0) rectangle (\d+\w,\dy);
+ }
+ \node[x=\scale,y=\scale, anchor=center] () at (\dx/2,-10){Field};
+ \draw[x=\scale,y=\scale,color=black] (0,0) rectangle (\dx,\dy);
+ \end{scope}
+
+ \begin{scope}[xshift=12cm]
+ \def\n{6}
+ \def\dc{0.5}
+ \def\s{0.681}
+ \def\p{40}
+ \pgfmathsetmacro{\d}{0}
+ \foreach \i [remember=\dd as \d (initially 0)] in {1,...,\n} {
+ \pgfmathsetmacro{\w}{\dc * \p * \s^\i}
+ \fill[x=\scale,y=\scale,color=cellblue] (\d,0) rectangle (\d+\w,\dy);
+ \pgfmathsetmacro{\dd}{\d + \p * \s^\i}
+ }
+ \node[x=\scale,y=\scale, anchor=center] () at (\dx/2,-10){Gradient};
+ \draw[x=\scale,y=\scale,color=black] (0,0) rectangle (\dx,\dy);
+ \end{scope}
+
+ \begin{scope}[xshift=15cm]
+ \def\n{100}
+ \pgfmathsetmacro{\w}{\dx / \n}
+ \foreach \i in {1,...,\n} {
+ \pgfmathrandominteger{\r}{0}{1}
+ \ifthenelse{\r = 0}{
+ \fill[x=\scale,y=\scale,color=cellblue] (\i*\w,0) rectangle (\i*\w+\w,\dy);
+ }{}
+ }
+ \node[x=\scale,y=\scale, anchor=center] () at (\dx/2,-10){Random};
+ \draw[x=\scale,y=\scale,color=black] (0,0) rectangle (\dx,\dy);
+ \end{scope}
+% \node[x=1mm,y=1mm, anchor=center] () at (160,-36){Set F};
+ \end{tikzpicture}
+ \tikzexternaldisable
+ \caption[Examples of tactile patterns.]{Examples of tactile patterns with increased complexity. The background is white and the pattern is blue.}
+ \label{fig:tactilepattern}
+\end{figure}
\begin{definition}{Tactile Texture}
- We define
+ We define a \defword{Tactile texture} as combination of one of several patterns on several dimensions or at different scales.
\end{definition}
-Pour le toucher, nous appelons texture une séquence spatiale ou temporelle d’éléments singuliers (i.e. une forme distincte du fond), périodique ou non, formant un motif dont la complexité est variable (Figure 1). L’ordre de grandeur de ces éléments est inférieur à la taille d’un doigt pour qu’ils ne soient pas considérés comme des objets à part entière. Plusieurs motifs peuvent s’associer à des échelles différentes, procurant différents niveaux de détails à la texture, comme par exemple la rugosité due à la microstructure du matériau et l’organisation spatiale de picots en reliefs. La notion de texture peut être envisagée dans un nombre quelconque de dimensions spatiales (typiquement 1, 2 ou 3).
+Textures can have patterns of different scales, providing different levels of details.
+For example physical objects can have a rugosity due to the microstructure of their material and a higher grain structure due to carving of their surface.
+\reffig{fig:tactiletexture} shows two examples of tactile textures.
+The first one is a sequence of tactile patterns of different types: field, constant, gradient and random.
+Users can most likely identify different parts in the textures, without necessarily locate their boundaries.
+The second one repeats a field-type pattern, which is itself a repetition of a shape.
+We can also see it as a frequency modulation of two signals.
+We can obviously use the same structure and parameters than with vibrotactile Tactons (see \reffig{fig:lexical} and \ref{fig:syntactic}).
+However our perception of friction is not as accurate as our perception of a vibration amplitude.
+Therefore we cannot simply translate vibrotactile Tactons into tactile textures.
+
+
+\begin{figure}[htb]
+ \definecolor{cellblue}{rgb} {0.17,0.60,0.99}
+ \def\dx{655}
+ \def\dy{40}
+ \def\scale{0.26mm}
+
+ \centering
+
+ \tikzexternalenable
+ \begin{tikzpicture}
+
+ \begin{scope} % field
+ \def\n{10}
+ \def\w{6}
+ \def\dc{0.4}
+ \foreach \i in {0,...,\n} {
+ \pgfmathsetmacro{\d}{\i*\w}
+ \fill[x=\scale,y=\scale,color=cellblue] (\d,0) rectangle (\d+\w*\dc,\dy);
+ }
+ \end{scope}
+
+ \begin{scope}[xshift=3cm] %gradient
+ \def\n{8}
+ \def\dc{0.6}
+ \def\s{0.8}
+ \def\p{50}
+ \pgfmathsetmacro{\d}{0}
+ \foreach \i [remember=\dd as \d (initially 0)] in {1,...,\n} {
+ \pgfmathsetmacro{\w}{\dc * \p * \s^\i}
+ \fill[x=\scale,y=\scale,color=cellblue] (\d,0) rectangle (\d+\w,\dy);
+ \pgfmathsetmacro{\dd}{\d + \p * \s^\i}
+ }
+ \end{scope}
+
+ \begin{scope}[xshift=7.5cm] %random
+ \def\n{200}
+ \pgfmathsetmacro{\w}{0.5}
+ \foreach \i in {1,...,\n} {
+ \pgfmathrandominteger{\r}{0}{1}
+ \ifthenelse{\r = 0}{
+ \fill[x=\scale,y=\scale,color=cellblue] (\i*\w,0) rectangle (\i*\w+\w,\dy);
+ }{}
+ }
+ \end{scope}
+
+ \begin{scope}[xshift=10.2cm] % field
+ \def\n{50}
+ \def\w{2}
+ \def\dc{0.6}
+ \foreach \i in {0,...,\n} {
+ \pgfmathsetmacro{\d}{\i*\w}
+ \fill[x=\scale,y=\scale,color=cellblue] (\d,0) rectangle (\d+\w*\dc,\dy);
+ }
+ \end{scope}
+
+ \begin{scope}[xshift=12.8cm] %gradient
+ \def\n{12}
+ \def\dc{0.6}
+ \def\s{1.28}
+ \def\p{2}
+ \pgfmathsetmacro{\d}{0}
+ \foreach \i [remember=\dd as \d (initially 0)] in {1,...,\n} {
+ \pgfmathsetmacro{\w}{\dc * \p * \s^\i}
+ \fill[x=\scale,y=\scale,color=cellblue] (\d,0) rectangle (\d+\w,\dy);
+ \pgfmathsetmacro{\dd}{\d + \p * \s^\i}
+ }
+ \end{scope}
+ \draw[x=\scale,y=\scale,color=black] (0,0) rectangle (\dx,\dy);
+
+ \begin{scope}[yshift=-1.5cm]
+ \def\n{10}
+ \def\ndc{0.7}
+ \def\m{16}
+ \def\mdc{0.4}
+ \pgfmathsetmacro{\nw}{\dx / \n}
+ \pgfmathsetmacro{\mw}{\nw * \ndc / \m}
+ \pgfmathsetmacro{\nn}{\n - 1}
+ \pgfmathsetmacro{\mm}{\m - 1}
+ \foreach \i in {0,...,\nn} {
+ \foreach \j in {0,...,\mm} {
+ \fill[x=\scale,y=\scale,color=cellblue] (\i * \nw + \j * \mw,0) rectangle (\i * \nw + \j * \mw + \mw * \mdc,\dy);
+ }
+ }
+ \draw[x=\scale,y=\scale,color=black] (0,0) rectangle (\dx,\dy);
+ \end{scope}
+
+% \node[x=1mm,y=1mm, anchor=center] () at (160,-36){Set F};
+ \end{tikzpicture}
+ \tikzexternaldisable
+ \caption[Examples of tactile texture.]{Examples of tactile texture. The first one is a repetition of a field-type tactile pattern. The second one is the combination of a series of various pattern types. It starts with a field, then a constant, a decreasing gradient, a random pattern, another field and finishes with an increasing gradient.}
+ \label{fig:tactiletexture}
+\end{figure}
+
+Contrary to vibrotactile Tactons, tactile texture can easily extend to multiple dimensions.
+\reffig{fig:tactilepattern} shows 1D textures, but it can extend to 2D, 3D textures or even 4D with a temporal dimension.
+This is not necessarily meant to be a systematic list of possible patterns.
+There are for instance many ways to increase the size of shapes of a gradient: linearly, exponentially, etc.
+However it is an illustration of the expressive power of tactile textures made of steps.
+
+
+What
+
+
Le concept de textures amène donc à s’interroger sur les formes – spatiales ou temporelles – et plus généralement sur la perception de ces formes. Nous pourrions alors faire la distinction avec le concept d’icône, qui comme nous allons le voir par la suite, se base sur ces formes, mais dont l’étude pose cette fois des questions de sens, avec un objectif in- formatif. Ces deux dimensions cognitives de perception et de sens sont bien-sûr intimement liées, mais nécessitent des approches différentes pour leur étude.
-Perception des textures tactiles
-Le toucher permet une appréciation locale d’un objet, né- cessairement située au point de rencontre entre le corps et la partie explorée. C’est la modalité perceptive du contact par excellence. Pour percevoir des caractéristiques glo- bales d’un objet, comme sa forme ou sa texture, une ex- ploration est donc nécessaire. Celle-ci peut prendre diffé- rentes formes, directement liées à la caractéristique explo- rée. On parle alors de procédures exploratoires [24, 15]. Par exemple, une pression tangentielle permet de percevoir la densité d’un matériau, ou encore un contact statique per- met de percevoir sa température. C’est principalement le balayage latéral qui permet de percevoir la rugosité d’une surface.
-Presque tous les travaux sur la perception des textures s’inté- ressent à la rugosité des matériaux [21]. Celle-ci correspond à l’échelle de la microstructure qui est aisément détectable par le toucher du fait de la résolution élevée de récepteurs de la peau, en particulier au bout des doigts. Deux types de stimulation contribuent à la perception de la rugosité : la va- riation spatiale de singularités et les vibrations [19]. Pour les textures très fines, ce sont surtout les vibrations qui per- mettent leur perception par le système haptique [18]. Une étude [29] a montré que la rugosité est invariante de la vi- tesse relative d’une surface mise en mouvement sur un doigt immobile, ce qui laisserait cette fois penser que la rugosité dépend des caractéristiques spatiales des reliefs (ici des pi- cots). Dans ce sens, Cascio et Sathian [12] ont étudié l’in- fluence de la taille des plateaux et des creux, ainsi que de leur fréquence de variation, dans la perception de la rugosité. Les auteurs établissent que c’est essentiellement la taille des creux qui influence la perception de la rugosité.
-Nous savons déjà que l’utilisation d’un gradient de tex- ture peut aider à reproduire une position ainsi qu’une dis- tance [40]. D’autre part, dans une exploration libre, la per- ception de l’orientation d’une texture est possible en compa- rant celle-ci à une texture adjacente de référence [20]. Jin et Hughes [22] ont montré que même en compensant des gra- dients de texture à une dimension par des vitesses d’explora- tion relatives, afin de fournir une rugosité constante, les par- ticipants étaient toujours capables de détecter ces gradients. Il a aussi été montré qu’un gradient positif (organisé du moins dense au plus dense) permettait d’atteindre plus rapi- dement des cibles qu’avec un gradient négatif [37]. Ces tex- tures étaient proposées dans un environnement numérique et leur exploration était réalisée à l’aide du dispositif de suppléance perceptive Tactos composé de cellules Braille. Enfin, nous savons qu’avec des interfaces à frottement pro- grammable, les cibles possédant un coefficient de friction différent sont sélectionnées plus efficacement [13, 25].
-Il pourrait être intéressant de reproduire ces expérimenta- tions de psychologie expérimentale en utilisant les disposi- tifs à frottement programmable. Ceux-ci ne permettent pas d’afficher des textures en reliefs. Pourtant les travaux de Biet et al. [8] ont montré qu’une succession de zones rugueuses et lisses était perceptible comme une texture possédant une période spatiale.
-Signalons aussi l’existence de recherches sur la génération automatique de textures et l’efficacité des algorithmes à pro- duire des rugosités différentiables via une interface à retour de force [2]. Le but étant de distinguer au mieux des sur- faces explorées par le toucher. Les textures produites ne pos- sèdent aucune variation de structure dans l’espace ce qui li- mite leur caractère informatif. Le fait qu’elles n’aient pas de frontière nette entre les plateaux et les creux pourrait de plus les rendre difficiles à percevoir via une interface à frottement programmable.
+\begin{figure}[htb]
+ \definecolor{cellblue}{rgb} {0.17,0.60,0.99}
+ \def\dx{80}
+ \def\dy{40}
+ \def\spacing{5}
+ \def\scale{0.72}
+ \linespread{1.0}
+ \def\n{7}
+ \pgfmathsetmacro{\nn}{\n - 1}
+
+ \centering
+
+ \tikzexternalenable
+ \begin{tikzpicture} %v lines
+ \foreach \i in {0,...,\nn} {
+ \pgfmathsetmacro{\xs}{\i*(\dx+\spacing)*\scale}
+ \begin{scope}[xshift=\xs]
+ %\clip[x=\scale,y=\scale] (0,0) rectangle (\dx,\dy);
+ \pgfmathsetmacro{\m}{2^\i}
+ \pgfmathsetmacro{\d}{\dx / \m}
+ \pgfmathsetmacro{\mm}{\m - 1}
+ \foreach \j in {0,...,\mm} {
+ \fill[x=\scale,y=\scale,color=cellblue] (\j*\d,0) rectangle (\j*\d + \d/2,\dy);
+ }
+ \draw[x=\scale,y=\scale,color=black] (0,0) rectangle (\dx,\dy);
+ \end{scope}
+ }
+ \node[x=\scale,y=\scale, align=right, text width=2cm, anchor=east] () at (0,20){vertical lines};
+ \end{tikzpicture}
+
+ \vspace{1mm}
+
+ \begin{tikzpicture} %h lines
+ \foreach \i in {0,...,\nn} {
+ \pgfmathsetmacro{\xs}{\i*(\dx+\spacing)*\scale}
+ \begin{scope}[xshift=\xs]
+ %\clip[x=\scale,y=\scale] (0,0) rectangle (\dx,\dy);
+ \pgfmathsetmacro{\m}{2^\i}
+ \pgfmathsetmacro{\d}{\dy / \m}
+ \pgfmathsetmacro{\mm}{\m - 1}
+ \foreach \j in {0,...,\mm} {
+ \fill[x=\scale,y=\scale,color=cellblue] (0,\dy - \j*\d) rectangle (\dx,\dy - \j*\d - \d/2);
+ }
+ \draw[x=\scale,y=\scale,color=black] (0,0) rectangle (\dx,\dy);
+ \end{scope}
+ }
+ \node[x=\scale,y=\scale, align=right, text width=2cm, anchor=east] () at (0,20){horizontal lines};
+ \end{tikzpicture}
+
+ \vspace{1mm}
+
+ \begin{tikzpicture} %squares
+ \foreach \i in {0,...,\nn} {
+ \pgfmathsetmacro{\xs}{\i*(\dx+\spacing)*\scale}
+ \begin{scope}[xshift=\xs]
+ %\clip[x=\scale,y=\scale,draw] (0,0) rectangle (\dx,\dy);
+ \pgfmathsetmacro{\mx}{2^(\i+1)}
+ \pgfmathsetmacro{\my}{2^\i}
+ \pgfmathsetmacro{\d}{\dx / \mx}
+ \pgfmathsetmacro{\mxx}{\mx-1}
+ \pgfmathsetmacro{\myy}{\my-1}
+ \foreach \j in {0,...,\mxx} {
+ \foreach \k in {0,...,\myy} {
+ \pgfmathsetmacro{\res}{int(Mod(\j + \k, 2))}
+ \ifthenelse{\res = 0}{
+ \fill[x=\scale,y=\scale,color=cellblue] (\j*\d,\dy - \k*\d) rectangle (\j*\d + \d,\dy - \k*\d - \d);
+ }{}
+ }
+ }
+ \draw[x=\scale,y=\scale,color=black] (0,0) rectangle (\dx,\dy);
+ \end{scope}
+ }
+ \node[x=\scale,y=\scale, align=right, text width=2cm, anchor=east] () at (0,20){squares};
+ \end{tikzpicture}
+
+ \vspace{1mm}
+
+ \begin{tikzpicture} %dots
+ \foreach \i in {0,...,\nn} {
+ \pgfmathsetmacro{\xs}{\i*(\dx+\spacing)*\scale}
+ \begin{scope}[xshift=\xs]
+ %\clip[x=\scale,y=\scale,draw] (0,0) rectangle (\dx,\dy);
+ \pgfmathsetmacro{\mx}{2^(\i+1)}
+ \pgfmathsetmacro{\my}{2^\i}
+ \pgfmathsetmacro{\d}{\dx / \mx}
+ \pgfmathsetmacro{\dd}{\d / 2}
+ \pgfmathsetmacro{\mxx}{\mx-1}
+ \pgfmathsetmacro{\myy}{\my-1}
+ \foreach \j in {0,...,\mxx} {
+ \foreach \k in {0,...,\myy} {
+ \pgfmathsetmacro{\res}{int(Mod(\j + \k, 2))}
+ \pgfmathsetmacro{\resb}{int(Mod(\k, 2))}
+ \ifthenelse{\res = 0 \AND \resb = 0}{
+ \fill [x=\scale,y=\scale,color=cellblue] (\j*\d+\dd,\dy-\k*\d-\dd) circle (\dd);
+ }{}
+ }
+ }
+ \draw[x=\scale,y=\scale,color=black] (0,0) rectangle (\dx,\dy);
+ \end{scope}
+ }
+ \node[x=\scale,y=\scale, align=right, text width=2cm, anchor=east] () at (0,20){dots};
+ \end{tikzpicture}
+ \vspace{1mm}
+%nbc cs 1 2 3 4 5 6 7 8
+%1 4 3/3 1/3
+%2 8 7/7 5/7 3/7 1/7
+%4 16 15/15 13/15 11/15 9/15 7/15 5/15 3/15 1/15
+
+ \begin{tikzpicture} % circles
+ %\node[x=\scale,y=\scale, anchor=center] () at (10,10){\n};
+ \def\nx{1}
+ \foreach \i in {0,...,\nn} {
+ \pgfmathsetmacro{\xs}{\i*(\dx+\spacing)*\scale}
+ \begin{scope}[xshift=\xs]
+ \clip[x=\scale,y=\scale] (0,0) rectangle (\dx,\dy);
+ %\node[x=\scale,y=\scale, anchor=center] () at (0,0) {\i};
+ \pgfmathsetmacro{\nbc}{2^\i}
+ \pgfmathsetmacro{\nbcc}{2*\nbc}
+ \pgfmathsetmacro{\cs}{\nbc*4}
+ %\node[x=\scale,y=\scale, anchor=center] () at (\i+10,20) {\cs};
+ \foreach \j in {-14,...,\nbcc} {
+ \pgfmathsetmacro{\res}{int(Mod(\j, 2))}
+ \pgfmathsetmacro{\ci}{\cs - 2 * \j + 1}
+ \pgfmathsetmacro{\d}{\dy * \ci / (\cs - 1)}
+ \wlog{\i ; \j ; nbc \nbc ; cs \cs ; ci \ci ; d \d}
+ %\node[x=\scale,y=\scale, anchor=center] () at (10,(\i*10)) {\ci};
+ \ifthenelse{\res = 1}{
+ \fill [x=\scale,y=\scale,color=cellblue] (\dx / 2,\dy / 2) circle (\d);
+ }{
+ \fill [x=\scale,y=\scale,color=white] (\dx / 2,\dy / 2) circle (\d);
+ }
+ }
+ \draw[x=\scale,y=\scale,color=black] (0,0) rectangle (\dx,\dy);
+ \end{scope}
+ }
+ \node[x=\scale,y=\scale, align=right, text width=2cm, anchor=east] () at (0,20){circles};
+ \end{tikzpicture}
+ \tikzexternaldisable
+ \caption[Bla.]{Bla.}
+ \label{fig:stimtacpatterns}
+\end{figure}
ground truth: paper?
+t
+est
Tactile Textures~\cite{potier16}
+Exploration complète du design space compliuée
+
+Sampling~\cite{demers21}
+
+MDS\cite{enriquez06}
+
\subsection{Vibrotactile widgets}
\label{sec:printgets}