Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2011:alunos:trabalho_final:melina:start

Melina de Souza Leite

foto_perfil.jpg

Bióloga e Mestre em Ecologia-UFRJ

Especialista em Laboratório, Depto Ecologia, IB-USP

Trabalho final

Plano

Função do Cabeleireiro Rasta

O objetivo é criar uma função para pessoas que pretendam fazer Dreadlocks possa calcular quantos dreads (conjunto emaranhado de fios de cabelo) terá em relação à uma espessura média de dreads.

A função pretenderá também calcular o crescimento do dread no tempo dependendo da espessura média de cada dread. Aparentemente o crescimento dos dreads nao segue o crescimento dos fios (em geral 1cm/mês), já que o ato de embolar os fios diminui seu comprimento aparente.

As informações sobre os valores encontrados para a espécie humana (tx de crescimento de fio, área de couro cabeludo, densidade de fios, peso do fio) serão buscadas na literatura para estipular os valores de referência da função (default).

A espessura de cada dread será tirada como o diâmetro médio da base do dread. Entretanto deverá haver uma espessura mínima para que seja considerado um dread. Quanto a este valor, ainda não consegui estipular, mas usarei a área mínima de couro cabeludo, ou o numero mínimo de fios de cabelo, necessários para estruturar um dread. POr outro lado, deve também haver uma área basal máxima possível, pois não há como se ter apenas um dread ocupando toda a área do couro cabeludo. Penso que a área máxima nao deva ser maior do que 1/5 da área do couro cabeludo, para que não haja menos de 5 dreads na cabeça, o que corresponde ao número crítico de fios do cabelo do Cebolinha (Turma da Mônica).

Para os cálculos de crescimento mensal do dread, devo pensar numa relação entre a área basal e o comprimento de crescimento do emaranhado de fios. A área basal mínima de dread deve ter crescimento próximo a 1 cm/mês, conforme o crescimento de um fio solto. Mas quanto maior a área basal menos rápido vai crescer o dread, pois os fios precisam preencher um volume maior de cilindro.

Comentário Leandro

A proposta parece bem interessante. Só precisa deixar claro como será a entrada de dados para a função.

Que tal pedir para o usuário inserir além de número ou espessura dos dreads, área do couro cabeludo?

Sugiro que você adote valores constantes de espessura de fios, crescimento, densidade… para facilitar a criação da função. Depois você poderia aperfeiçoá-la com mais tempo.

Após a entrega

Sensacional! “Every man gotta right to decide his own destiny” … and now also their dreads.

FUNÇÃO DO CABELEREIRO RASTA

Página de ajuda

raxta			package:unkonw			R Documentation			
				Função do Cabelereiro Rasta

Descrição

Calcula a espessura média (diametro médio) de dread referente a um numero pretendido de dreads a serem feitos no cabelo. Retorna também a área de couro cabeludo necessaria para a confecção do dread (lado da área de um quadrado). Assim como o comprimento do cabelo com dreads de certa espessura apos um determinado periodo de tempo de crescimento.

Uso
raxta(dread, hair="c", head="m", tam=10, t=0)

Argumentos

dread	vetor com números inteiros, correspondentes ao numero de dreads pretendidos
hair	tipo de cabelo. "c" para cheio (default), ou seja, maior densidade de numeros de fios por área, cerca de 150 000 fios em todo couro cabeludo. "r" para couros cabeludos com cerca de 100 000 fios, baixa densidade de fios.
head	área média de couro cabeludo para classes de tamanho de cabeça: "s" cabeças pequenas com cerca de 200 cm2 de area. "m" (default) cabeças de tamanho mediano com cerca de 250m2 de area. "b" cabeças grandes com cerca de 300m2 de área. A maioria dos humanos adultos possui entre 250 e 300 cm2 de  área de couro cabeludo.
tam	comprimento dos fios do cabelo sem dreads. Por padrao, o comprimento de fio a partir do qual os dreads podem ser feitos e de 10cm.
t	tempo em meses apos a construçao dos dreas para se saber o comprimento destes. Por padrao, o tempo t=0 indica o comprimento do cabelo 	imediatamente apos a construçao dos dreads.	

Detalhes
Os parâmetros médios usados como referência para a funçao foram retirados das medidas retiradas pela autora de pessoas com dreads e valore aproximados para um adulto:

-número de cabelos por cabeça 
	-cabelo ralo - ~100 mil fios
	-cabelo cheio - ~150 mil fios

-área couro cabeludo
	-cabeça pequena - 200 cm2
	-abeça média - 250 cm2
	-cabeça grande - 300 cm2
	
-tipo de cabelo:
	-ralo: dread de 1cm de diâmetro (~2.3cm2 de area de dread) necessita de 4 cm2 de couro cabeludo para ser formado
	-cheio: dread de 1cm de diâmetro necessita de 2.5 cm2 de couro cabeludo para ser formado
	
-numero máximo de dreads (dread com mínimo de 1cm de diâmetro) 
	-cabelo ralo
		-cabeça pequena - 60
		-cabeça média - 80
		-cabeça grande - 100
	-cabelo cheio 
		-cabeça pequena - 100
		-cabeça média - 125
		-cabeça grande - 150

-número mínimo de dreads em qualquer cabeça - 5

-crescimento dread:
	-dread fino (1 a 1.5 cm de diâmetro) - 1 cm/mês
	-dread grosso (1.6 a 3.5 cm de diâmetro) - 0.75 cm/mês
	-dread muito grosso (a partir 3.5 cm de diâmetro) - 0.5 cm/mês


Valores

Retorna um data frame com as linhas correspondentes ao número de dreads, diâmetro de cada dread em cm, área basal em cm2, lado da área de um quadrado de couro cabeludo necessário para fazer o dread em cm, comprimento em cm dos dreads após um determinado tempo (em meses). 


Autora
Melina de Souza Leite
melina.leite@ib.usp.br

Exemplos
x <- seq(from=10, to=60, by=10) 
raxta(x, hair="c", head="m", tam=20, t=0)
y <- c(4, 13, 20, 110)
raxta(y, hair="r", head="b", tam=60, t=12)

Código da função

raxta <- function(dread, hair="c", head ="m", tam=10, t=0)
		{
			ifelse(dread<5, NA, dread)
			{
				dread[dread<5] = NA
				}
			
			if(hair=="c")
			{
			
				if(head =="s")
				{
					area.head = 200/2.5
					ifelse(dread>60, NA, dread)
					{
						dread[dread>60]=NA
						}
					area.dread <- round(area.head/dread, 1)
					diam.dread <- round(sqrt(area.dread/pi)*2, 1)
					lado.quadrado <- round(sqrt(area.dread*2.5), 1)
					}
			
				if(head =="m")
				{
					area.head = 250/2.5
					ifelse(dread>80, NA, dread)
					{
						dread[dread>80]=NA
						}
					area.dread <- round(area.head/dread, 1)
					diam.dread <- round(sqrt(area.dread/pi)*2, 1)
					lado.quadrado <- round(sqrt(area.dread*2.5), 1)
					}

				if(head =="b")
				{
					area.head = 300/2.5
					ifelse(dread>100, NA, dread)
					{
						dread[dread>100]=NA
						}
					area.dread <- round(area.head/dread, 1)
					diam.dread <- round(sqrt(area.dread/pi)*2, 1)
					lado.quadrado <- round(sqrt(area.dread*2.5), 1)
					}
				}	
		
			if(hair=="r")
			{
			
				if(head =="s")
				{
					area.head = 200/4
					ifelse(dread>100, NA, dread)
					{
						dread[dread>100]=NA
						}
					area.dread <- round(area.head/dread, 1)
					diam.dread <- round(sqrt(area.dread/pi)*2, 1)
					lado.quadrado <- round(sqrt(area.dread*4), 1)
					}
		
				if(head =="m")
				{
					area.head = 250/4
					ifelse(dread>125, NA, dread)
					{
						dread[dread>125]=NA
						}
					area.dread <- round(area.head/dread, 1)
					diam.dread <- round(sqrt(area.dread/pi)*2, 1)
					lado.quadrado <- round(sqrt(area.dread*4), 1)
					}

				if(head =="b")
				{
					area.head = 300/4
					ifelse(dread>150, NA, dread)
					{
						dread[dread>150]=NA
						}
					area.dread <- round(area.head/dread, 1)
					diam.dread <- round(sqrt(area.dread/pi)*2, 1)
					lado.quadrado <- round(sqrt(area.dread*4), 1)
					}
				}	
		
		tam.real = rep(0, length=length(diam.dread))
		t.real = rep(0, length=length(diam.dread))
		for(i in 1:length(diam.dread)) 
			{
				if(is.na(diam.dread[i]))
				{
					tam.real[i]= NA
					t.real[i]= NA
					}
			
			else{
				if(diam.dread[i]<=1.5)
				{
					tam.real[i]=tam
					t.real[i]=t
					}
			if (diam.dread[i]>1.5 & diam.dread[i]<=3.5)
				{
					tam.real[i]=tam*0.75
					t.real[i]=t*0.75	
					}
			if (diam.dread[i]>3.5)
				{
					tam.real[i]=tam*0.5
					t.real[i]=t*0.5
					}
				}
				}
				compr.dread = t.real+tam.real

		
		cat("\n \t numero de dreads acima ou abaixo do permitido retornam NA. Ver ajuda sobre limites. \n\n")
		
		cat("\n numero \t\t= quantidade de dreads na cabeça \n diametro \t\t= espessura de cada dread \n area_basa \t= área do cilindro do dread \n lado_quadrado = lado da área do quadrado de couro cabeludo para fazer o dread \n comprimento\t = comprimento do dread no tempo especificado \n\n")	
		
		return(data.frame (num_dread = dread, diametro = diam.dread, area_basal = area.dread, lado_quadrado = lado.quadrado, comprimento = compr.dread))
		
			
			}

Arquivo da função

05_curso_antigo/r2011/alunos/trabalho_final/melina/start.txt · Última modificação: 2020/08/12 06:04 (edição externa)